这些合规要求是我从《YD/T 2694-2014 移动互联网联网应用安全防护要求》截出的,我就简单的分析一下,这样做测评时,我们的效率会更快一些。
要求1:
“当用户和业务系统的通信双方中的一方在一段时间内未作任何响应,另一方应能够自动结束会话”
为什么要这样要求:
肯定是有安全风险撒,长时间有效的会话增加了会话劫持的风险。攻击者可以在长时间内利用劫持的会话ID进行未授权访问。自动结束会话可以缩短攻击者利用会话ID的时间窗口,从而降低风险。
怎么解决:
可做会话超时设置,在系统中直接定义超时时间,比如用户未进行任何操作,30分钟后过期。(这个期限取决于具体的应用场景和用户体验需求)
Web应用:使用服务器端的会话管理机制来跟踪用户活动,并在超时时自动结束会话。可以通过设置session.timeout或类似参数来定义超时策略。
移动应用:通过在应用内定期检查用户活动,并在超时后自动登出用户来实现。
要求2:
“应采取会话保护措施保障软件与后台服务器之间的会话不可被窃听、篡改、伪造、重放等”
为什么要这样要求:
可能因为窃听,攻击者通过窃取会话ID或Token,冒充合法用户访问其账户,进行未授权操作,如查看、修改或删除数据。因为篡改,攻击者修改会话数据(如会话ID、Token),以获取未授权的访问权限。因为重放,攻击者重放财务或交易请求,造成重复扣款或其他经济损失。
怎么解决:
使用HTTPS加密协议保障会话数据的安全,确保数据在传输过程中无法被未授权的第三方读取。
要求3:
“应确保会话的安全创建。在用户认证成功后,应为用户创建新的会话并释放原有会话;创建的会话标识应满足随机性和长度要求,避免被攻击者猜测;会话与IP地址可绑定,降低会话被盗用的风险”
为什么要这样要求:
创建新的会话的目的是防止会话固定攻击。绑定会话ID与特定IP地址,确保只有从该IP地址发出的请求能使用该会话ID,从而减少会话被其他来源盗用的风险。
怎么解决:
举个例子
-
用户登录
-
用户通过登录界面提交凭证(用户名和密码)。
-
生成新会话
-
服务器验证凭证正确后,生成新的随机会话ID,如
d4f5g7h9j8k0l1m2n3o4p5q6r7s8t9u
。 -
失效旧会话
-
使旧会话ID(如
a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p
)失效,删除其在服务器上的记录。 -
关联新会话
-
将新会话ID与用户的会话数据关联,并在用户的浏览器中设置新的会话Cookie。
要求4:
“应确保会话数据的存储安全。用户登录成功后所生成的会话数据应存储在服务器端,并确保会话数据不能被非法访问;当更新会话数据时,要对数据进行严格的输入验证,避免会话数据被非法篡改”
为什么要这样要求:
确保会话数据的存储安全涉及将会话数据存储在服务器端、实施严格的访问控制和加密保护、以及在数据更新时进行严格的输入验证。通过这些措施,可以有效防止会话数据被非法访问或篡改,保护用户会话的安全性。
怎么解决:
对会话数据采用AES加密算法存储在数据库中,设置访问控制列表(ACL),仅允许经过授权的服务或用户访问会话数据存储。
要求5:
“应确保会话数据的传输安全,防止泄露会话标识”
为什么要这样要求:
传输过程中泄露会话标识可能导致会话被劫持或篡改。
怎么解决:
确保所有的会话数据通过HTTPS协议传输。
要求6:
“在涉及到关键业务操作的Web页面,应为当前Web页面生成一次性随机令牌,作为主会话标识的补充。在执行关键业务前,应确保用户提交的一次性随机令牌与服务器端保存的一次性随机令牌匹配,以避免跨站请求伪造等攻击”
为什么要这样要求:
在关键业务操作的Web页面生成一次性随机令牌,并在执行操作前验证令牌,可以有效防止CSRF等攻击。通过生成唯一的令牌、确保其高随机性、短生命周期,以及在传输中使用HTTPS等措施,可以显著提高Web应用的安全性。
怎么解决:
-
页面加载
-
生成令牌:服务器生成随机令牌,如
abc123xyz456
,并将其嵌入到页面中(如<input type="hidden" name="csrf_token" value="abc123xyz456">
)。 -
用户操作
-
提交请求:用户在表单中提交请求时,将令牌一起提交到服务器。
-
服务器验证
-
验证令牌:服务器检查提交的令牌是否与存储的令牌匹配,并处理请求。
-
令牌处理
-
使令牌失效:处理请求后,使令牌失效或删除,以防止后续的重用。
要求7:
“应限制会话并发连接数,限制同一用户的会话并发连接数,避免恶意用户创建多个并发的会话来消耗系统资源,影响业务的可用性”
为什么要这样要求:
怎么解决:
要求8:
“应设置合理的会话超时阐值,在合理范围内尽可能减小会话超时阐值,可以降低会话被劫持和重复攻击的风险,超过会话超时闽值后立刻销毁会话,清除会话的信息”
为什么要这样要求:
恶意用户可能通过创建多个并发会话来占用系统资源(如内存、CPU、网络带宽),导致系统性能下降或服务中断。
怎么解决:
假设系统限制每个用户最多可以有3个并发会话:
-
用户登录
-
用户尝试登录系统时,服务器检查该用户当前的会话数量。
-
会话检查
-
如果用户已有3个并发会话,系统会拒绝新的登录请求,或提供提示让用户手动注销旧会话。
-
会话管理
-
当用户从另一个设备登录时,系统会自动注销最旧的会话,确保新会话能够创建。
要求9:
“应确保会话的安全终止。当用户登录成功并成功创建会话后,应在Web应用系统的各个页面提供用户登出功能,登出时应及时删除服务器端的会话数据;当处于登录状态的用户直接关闭浏览器时,需要提示用户执行安全登出或者自动为用户完成登出过程,从而安全的终止本次会话”
为什么要这样要求:
主要是防止未授权访问
怎么解决:
-
用户登出
-
操作:用户点击登出按钮,系统调用后端API,删除会话数据并清除客户端Cookie。
-
浏览器关闭
-
操作:设置服务器会话超时,例如30分钟无活动后自动过期,用户重新打开浏览器时需要重新登录。
-
提示用户
-
操作:在浏览器关闭或刷新时,弹出提示,建议用户保存工作并确认登出(取决于浏览器支持情况)。
累了,散会
THE END
原文始发于微信公众号(透明魔方):一些常见的会话安全合规要求和解决方法
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论