Javascript 清理输入与不允许输入

Javascript 清理输入与不允许输入,javascript,Javascript,我正在努力保护我的网站免受XSS攻击,从java脚本开始。我已经读到,我可以使用

我正在努力保护我的网站免受XSS攻击,从java脚本开始。我已经读到,我可以使用<等逃避用户输入。。然而,我个人更倾向于不允许用户输入,比如是的,这是有风险的,但前提是这是您为防止XSS而做的唯一一件事。对于用户控制的输入,有3个地方可以考虑添加一些保护:

  • 防止用户在将数据发送到服务器之前键入特殊字符(或粘贴它们)
  • 在响应中发送输入之前,服务器拒绝或删除输入中不需要的字符
  • 当值最终显示给用户时,该值应正确转义/编码为HTML
  • 如果你做了第1项,你也必须做第2项,为了更好的衡量,你也应该做第3项。如果你选择只做第1项,那么你就使得系统变得更糟糕,因为现在它更难看到攻击向量和测试它的工作原理。真正的攻击者可能不会使用你愚蠢的用户界面来阻止键入的字符,他们只会直接进入服务器并发送一个完全绕过用户界面的请求


    你最好只是用正确的方式去做,并且只执行第3项。只有当要求表明此字段因其他原因不接受特殊字符时,才应执行第1项和第2项。

    即使您阻止用户在文本字段中输入不好的内容,您是否可以确定他们不能通过控制台执行此操作?安全性应重点关注您发送给用户的内容,不是他们寄给你的。如果在显示时对用户提交的任何内容进行HTML编码,则浏览器不会将其作为代码执行。基本上(在概念上与SQL注入非常类似),您试图阻止用户向您发送您可以执行的恶意内容,但如果您只是不执行用户向您发送的内容,则无所谓。以下是您的UI保护在真正的攻击者看来的样子: