非存储输入中的代码注入

时间:2015-05-06 16:09:13

标签: security web code-injection

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

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

2 个答案:

答案 0 :(得分:0)

是。这称为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

答案 1 :(得分:0)

是的,code injection攻击有很多类型,具体取决于应用程序中使用的技术堆栈。通常在使用数据之前正确转义或剥离具有特殊含义的字符是可行的方法。检查任何API文档是否存在安全问题。

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