我的目标是阻止可以向我的网站发布内容的用户插入恶意JavaScript代码的任何尝试。假设我的网站没有使用JavaScript,是否有一些标记我可以放在每个页面的顶部或其他一些方式来实现JS在我的页面上运行的可能性? (在页面开头的一小部分JS就可以了,只要它能确保不再执行)感谢一堆。
答案 0 :(得分:6)
是的,有!
大多数现代网络浏览器都支持Content-Security-Policy标头,这样您就可以在HTTP标头中声明您的网站将加载某些类型的内容,包括Javascript代码。声明您的网站不会加载任何Javascript代码,也不会声明任何内联,这是完全可行的,这将有效地禁用您网站上的Javascript。
禁用所有Javascript的简单策略可能是:
Content-Security-Policy: script-src 'none'
但请注意,并非所有浏览器都实施Content-Security-Policy 。您仍然需要执行适当的数据清理以保护不支持CSP的浏览器。
答案 1 :(得分:2)
您尝试阻止的攻击类型称为cross-site scripting。这样你就可以开始学习如何防止它。
最简单的方法是转义用户输入中的特殊字符,以便用户无法发布<script>
等HTML标记。如果用户根本无法发布HTML,那么该工作就会起作用。如果您需要允许某些种HTML而不是脚本,那么您应该研究更复杂的HTML-sanitization技术。