【发布时间】:2020-07-22 16:11:07
【问题描述】:
我有一个用户很少的小型网站,最近我一直在研究网站安全性并偶然发现了 xss 攻击。我通过自我测试在我的代码中发现了一个漏洞,我可以在其中创建一个用户名<b>username</b>,它会以粗体显示。现在,用户采取的任何操作都会发送到我的服务器进行验证,我已明确禁止“<”和“>”字符。这足以防止 xss 攻击吗?
另外,我的文本字段非常有限(10 个字母),不过,我想这可以通过调用 chrome 开发工具中的函数来绕过?
这会做吗?或者还有什么我应该注意的吗?请注意,该站点不包含任何重要数据被盗或被黑客入侵,我只是希望它得到充分保护,因为 xss 攻击可能非常令人讨厌并重定向用户,但最终我觉得我的网站按预期方式工作是有责任的。..
【问题讨论】:
-
你使用什么服务器端语言?
-
javascript(节点 js)
-
清理您提取的所有用户数据,同时在您生成页面时对其进行清理。
<b>username</b>可能是一个愚蠢的用户名,但作为用户生成的内容,您需要不仅在您摄取(例如通过 POST 接受)时进行消毒,而且在您将其转回页面数据时:让您的服务器执行 HTML 实体替换,在浏览器中始终使用textContent,从不使用innerHTML。 -
是的,我添加了这个“代码”函数 htmlEscape(text) { return text.replace(/&/g, '&')。替换(/,'<')。 // 不必转义 > replace(/"/g, '"').replace(/'/g, '''); }'code'
标签: javascript html css xss