【问题标题】:Can a session be falsified?会话可以伪造吗?
【发布时间】:2011-12-01 10:56:26
【问题描述】:

我需要检查我所有的 asp 代码以防止 SQL 注入。

我也应该检查会话对象吗?

会话如何被劫持?

谢谢!!

【问题讨论】:

  • 为什么要否决这个问题?除了语法错误,我认为这是一个合理的问题。
  • 您可能因为问题文本缺乏焦点而被否决。主题表明您想谈论劫持,但正文开始谈论 SQL 注入。

标签: session asp-classic sql-injection


【解决方案1】:

会话可以被劫持。如果我没记错的话,Classic ASP 只支持基于 cookie 的会话标识符。如果有人能够窃取该 cookie(窃听),那么他们可以获得与合法用户相同的会话。

你也应该检查会话对象吗?那要看。如果您可以确保存储在会话中的所有对象都是“安全的”(输入已被清理),那么您可以跳过会话对象。如果您在应用程序的某个地方从不安全的来源获取数据并将其放入 Session 对象中,那么您也必须检查它。

【讨论】:

    【解决方案2】:

    为避免 SQL 注入,请使用参数化查询,而不是通过连接字符串来构建 SQL 查询。会话劫持是一个完全不同的话题。通过在每个请求中更改会话 cookie 可以使其变得更加困难,并且通过使用 HTTPS 完全避免。一个相关(并且更大)的问题是跨站点请求伪造(查找)。

    【讨论】:

      【解决方案3】:

      好吧,您只需要保护用户输入。所以你必须问自己的问题是:“这些数据是否来自用户输入?”如果是这样,您必须使用 sql 参数。

      在更大的范围内,考虑到您有单独的方法和类来执行数据访问,您应该为您提供给 sql 的每个文本参数设置 sql 参数。在这种情况下,sql 参数并不是真正需要的,因为如果您收到一个数字作为方法参数,就不可能有 sql 注入。

      但是,如果有疑问,请使用 sql 参数。

      【讨论】:

        【解决方案4】:

        会话变量存储在服务器的内存中。客户端上只存储了一个 cookie id。除非它们来自客户端,否则无需担心会话中的变量。很多时候,检查传递给数据库的所有变量以进行 sql 注入会更容易。

        【讨论】:

          猜你喜欢
          • 2012-07-08
          • 1970-01-01
          • 2021-10-08
          • 2019-01-21
          • 2023-03-27
          • 1970-01-01
          • 1970-01-01
          • 2018-12-12
          相关资源
          最近更新 更多