[英]XSS prevention. Handling <script is enough?
我想知道从文本输入字段检查和删除"<script"
是否足以阻止javascript代码注入攻击?
不,阻止特定案件是不够的 - 迟早,有人会想出一个你没想到的人为案例。
请参阅此最常见的XSS攻击列表 (其他,可能存在更多异国情调)。 您需要将允许的语法列入白名单,而不是假设已知向量旁边的所有内容都应该正常。
这还取决于您对输入的处理方式。 这是我在一些贺卡服务的真实网站上找到的简化示例:
它包含一个选择字段,您可以使用该字段选择文本的颜色:
<select name="color">
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>
该值在贺卡页面上未经过滤使用。 因此很容易篡改发送的POST数据并进行更改
color=red
喜欢的东西
color=red%22+onload%3D%22alert(%27foo%27)
这将导致
<font color="red" onload="alert('foo')">
而不是<font color="red">
。
因此,重点是永远不要相信用户的任何输入,甚至不是您定义的预定义值。
不幸的是,有各种各样的攻击可用,例如通过<img>
元素执行JavaScript。 我建议在服务器端的任何平台上使用XSS库。
这是我的意思的一个例子:
<img src="javascript:alert('hi');">
<input type="image" src="javascript:alert('hi');">
...这些示例本身并不是无害的,但您可以看到其他方式如何执行JavaScript。 哪些漏洞利用取决于浏览器,但请注意还有其他方法。
由于css表达式,myspace被黑了。 黑名单不起作用,白名单是唯一的途径。
除了Nick提到的那些,你还应该关注JavaScript事件,例如:“onload”,“onclick”,......
一次删除后<s<scriptcript
变为<script
。
如果你阻止它,还有很多其他的。 逃避 (不删除)所有出现<
, "
和&
更简单,更正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.