【问题标题】:Code-injection in non-stored inputs非存储输入中的代码注入
【发布时间】:2015-05-06 16:09:12
【问题描述】:

是否可以对未存储到数据库中的输入进行任何类型的代码注入?

我有一个包含多个输入的 Web 应用程序,但所有输入都用于过滤“搜索”。那么,我应该担心代码注入吗?如果是,是否有没有将输入存储到数据库中的实际注入示例?

【问题讨论】:

  • 你可以称之为跨站脚本而不是注入,但是是的。
  • 希望注入什么代码?根据搜索过滤器的实现方式,代码注入可能在那里起作用。

标签: security web code-injection


【解决方案1】:

是的。这称为Reflected Cross Site Scripting (XSS)。

您需要始终针对 XSS 验证所有输入。没有例外。

IE 8+ 和 Chrome 4+ 对此提供了一些保护。您可以设置以下标头来启用此功能:

X-XSS-Protection: 1; mode=block

详情:http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx

【讨论】:

    【解决方案2】:

    是的,code injection 攻击有多种类型,具体取决于您的应用程序中使用的技术堆栈。通常在使用数据之前正确转义或剥离具有特殊含义的字符是要走的路。检查任何 API 文档以了解安全问题。

    Reflected XSS 是其中之一 - 这是代码在攻击者设法访问您的网站的用户的浏览器中执行的位置(例如,通过向他们发送指向您的网站的链接,该链接中还包含一些脚本)。但是,保护应用程序的主要重点是正确输出编码而不是验证输入。请参阅OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet 以获取指导,但本质上,您需要在输出到 HTML 时将诸如& 之类的字符转换为&。正确输出编码意味着它显示的脚本相当执行。

    【讨论】:

      猜你喜欢
      • 2017-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多