我有一个简单的项目,但令我头疼,因为客户端编程不是我的事。基本上我有一个登录页面,客户希望我阻止XSS攻击,不允许用户不在用户名/密码字段上提交恶意代码。我会很容易在服务器端做,但他们不希望给我们访问。
有人给我提示的提示我该怎么做?即使很难,我也知道javascript / HTML的基础知识,我的经验几乎无效。
我知道有关于这个主题的几个问题,但是真诚地,我迷失了所有信息
最好的问候
答案 0 :(得分:4)
实际上,您只是无法在客户端进行任何可靠的XSS预防。攻击者只是禁用JavaScript,并且所有复杂的代码都不存在。任何客户端验证仅用于方便用户,仅此而已。
更新:上面我写的,对于二阶(a.k.a。存储)XSS是正确的。 第一顺序 XSS攻击(当攻击者创建伪造的URL时)可以使用JavaScript进行缓解。
答案 1 :(得分:4)
您可以像在服务器上阻止XSS一样阻止客户端上的XSS。 (注意,这只能防止在客户端上直接处理的输入,而不是针对提交给服务器然后传递回客户端的代码。)
例如,如果您想在div中显示片段ID,那么您将:
div.appendChild(document.createTextNode(location.hash));
不要只允许将原始输入解析为HTML:
// DANGER
div.innerHTML = location.hash;
当然,这只会保护页面免受提交给客户端代码的数据的影响。
无法使用客户端代码来防止恶意数据被提交到服务器端代码。客户端可以完全控制客户端代码,因此可以很容易地绕过它
如果您从服务器外部读取输入,然后将其输出到网页,则您必须具有XSS服务器端保护。