Security ASP.NET中的会话标识符漏洞问题

Security ASP.NET中的会话标识符漏洞问题,security,session,asp-classic,Security,Session,Asp Classic,我们有一个用经典ASP编写的产品。我们正在通过同样的安全认证。我们无法通过以下提到的标准之一 会话令牌长度和熵如下所示 问题: 会话ID的长度为24个字符,会话标识符本质上不是随机的;它们是可预测的 建议: 会话ID应该更长(至少50个字符)并且是随机的 有人对此有什么建议吗?不要将会话用于任何与安全相关的内容;使用数据库实现您自己的类似会话的机制。要使其发挥作用,您必须遵循以下步骤: 在每个页面请求中,检查名为“SESSION_TOKEN”的表单变量的值(当然也可以是您自己的命名),如果不存在

我们有一个用经典ASP编写的产品。我们正在通过同样的安全认证。我们无法通过以下提到的标准之一

会话令牌长度和熵如下所示

问题: 会话ID的长度为24个字符,会话标识符本质上不是随机的;它们是可预测的

建议: 会话ID应该更长(至少50个字符)并且是随机的


有人对此有什么建议吗?

不要将会话用于任何与安全相关的内容;使用数据库实现您自己的类似会话的机制。要使其发挥作用,您必须遵循以下步骤:

  • 在每个页面请求中,检查名为“SESSION_TOKEN”的表单变量的值(当然也可以是您自己的命名),如果不存在,则创建50个字符的随机字符串,然后在查询字符串上或作为隐藏表单值从一页传递到另一页
  • 使用SESSION_令牌作为名为“SESSION_Data”的数据库表的键,该表将模拟经典的ASP会话集合,根据上述令牌保存每个会话的数据,并具有一个存储上次访问时间的字段,以便您可以“终止”数据

  • 这至少会给你一个好的开始。当然,另一种方法是切换到ASP.NET,但我想你已经想到了

    对我来说,50个字符听起来真是太过分了。24个随机基64个字符对我来说很合理。