答案 0 :(得分:5)
非常依赖于背景。
此外,编码不仅仅是一个想法的闪光。您应该只编码具有特殊含义的所有字符,并且可以用于XSS ...
<
>
"
'
&
对于一个简单的例子,其中编码小于无关紧要就是这样......
欢迎来到Dodgy Site。请链接到您的主页。
恶意用户输入...
http://www.example.com" onclick="window.location = 'http://nasty.com'; return false;
这显然变成......
<a href="http://www.example.com" onclick="window.location = 'http://nasty.com'; return false;">View user's website</a>
如果您编写双引号,则该攻击无效。
答案 1 :(得分:2)
没有。您必须转义所有用户输入,无论它包含什么。
答案 2 :(得分:2)
还存在页面编码计数的情况。即 - 如果您的页面字符集不正确或在所有适用的位置都不匹配,则存在潜在的漏洞。有关详细信息,请参阅http://openmya.hacker.jp/hasegawa/security/utf7cs.html。
答案 3 :(得分:2)
根据您使用的框架,许多人现在都有一个输入验证模块。我在讲课时告诉软件学生的一个关键部分是使用已经存在的输入验证模块!
重新发明轮子通常不如使用已经存在的经过试验和测试的模块有效。 .Net拥有您可能需要的大部分内容 - 非常容易白名单(您知道唯一允许的输入)或黑名单(因为已知的'坏'事情总是会改变,但仍然有价值,但效果稍差)答案 4 :(得分:0)
如果您逃避所有用户输入,您应该是安全的。
这意味着它出现在任何地方。甚至是个人资料中的用户名。