繁体   English   中英

XSS预防。处理<脚本就足够了?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM