我正在创建这个UTF-8编码的HTML页面,用户可以在其中提供输入。我想做这个XSS证明。我遇到了这个名为Prototype的免费Javascript框架,它提供了一些有用的功能。一个特定的函数stripTags实际上剥离了输入字符串中的所有标记。 以下输入处理是否会阻止XSS?
Javascript中反xSS尝试的一个常见评论是用户可以绕过系统。这怎么可能?就我而言,使用该系统的用户值得信赖。但是,之前可能使用过同一台计算机的其他用户可能是恶意的。
答案 0 :(得分:3)
您只需要更改:
&
至&
<
至<
"
至"
(如果您在属性中使用单引号,也'
至'
)如果你已经转义了特殊的HTML字符,那么那里没有标签,而条带标签也没有做任何事情。
如果使用转义标记而不是转义,则外部输入将能够转义HTML属性,例如:
<input value="$foo">
如果$foo
是:
" src="404" onerror="evil()
如果您想在JavaScript中插入不受信任的内容(在<script>
内),则适用其他规则:
<script>
中解释,因此请勿在那里使用它们进行转义。\
→\\
,"
→\"
)和替换所有</
的出现与<\/
。答案 1 :(得分:0)
如果javascript框架在提供输入的机器上运行,那么这是不安全的(您将信任来自潜在恶意客户端的内容。
如果您在显示数据之前在客户端计算机上运行它,则取决于代码中的其他漏洞。
一个好的经验法则是安全约束通常应用于服务器端,用户不能简单地绕过它们。根据我的记忆,PHP有一个strip标签功能,并且在Apaches StringEscapeUtils for java中有类似的功能。我确信在.net
中有类似的东西