繁体   English   中英

在客户端防止XSS(纯Javascript)

[英]Prevent XSS on client-side (Pure Javascript)

我有一个简单的项目,但令我头疼,因为客户端编程不是我的事情。 基本上我有一个登录页面,客户希望我阻止XSS攻击,不允许用户不在用户名/密码字段上提交恶意代码。 我会很容易在服务器端做,但他们不希望给我们访问。

任何人有机会给我提示我怎么能这样做? 即使很难,我也知道javascript / HTML的基础知识,我的经验几乎无效。

我知道有关于这个主题的几个问题,但是真诚地,我迷失了所有信息

最好的祝福

实际上,您根本无法在客户端进行任何可靠的XSS预防。 攻击者只是禁用JavaScript,并且所有复杂的代码都不存在。 任何客户端验证只是为了方便用户 ,仅此而已。

更新:上面我写的,关于二阶 (也称为存储)XSS是真实的。 可以使用JavaScript缓解一阶 XSS攻击(当攻击者创建伪造的URL时)。

您在客户端上阻止XSS的方式与在服务器上阻止它的方式相同。 (注意,这只能防止在客户端上直接处理的输入,而不是针对提交给服务器然后传递回客户端的代码)。

  • 确保您知道任何给定变量的数据格式
  • 将任何用户输入(包括表单中的数据,来自URL的数据等)视为纯文本
  • 使用本机方法在可能的情况下处理数据,对其进行适当的编码

例如,如果要在div中显示片段ID,您将:

div.appendChild(document.createTextNode(location.hash));

不要只允许将原始输入解析为HTML:

// DANGER
div.innerHTML = location.hash;

当然,这仅保护页面免受提交给客户端代码的数据。

无法使用客户端代码来防止恶意数据被提交到服务器端代码。 客户端可以完全控制客户端代码,因此可以非常轻松地绕过它。

如果您从服务器外部读取输入,然后将其输出到网页,则必须从XSS获得服务器端保护

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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