我有一个文本框和提交按钮,用于发布内容并回复 HTML 页面。有什么办法(除了检查字符串开头的子字符串是否是
<h1>,<h2>,<h3>...,<script>,<style>,etc.
查看一个字符串在页面上发布时是否会采用不同的格式,以防止代码注入?
谢谢
-扎克
我有一个文本框和提交按钮,用于发布内容并回复 HTML 页面。有什么办法(除了检查字符串开头的子字符串是否是
<h1>,<h2>,<h3>...,<script>,<style>,etc.
查看一个字符串在页面上发布时是否会采用不同的格式,以防止代码注入?
谢谢
-扎克
显示用户数据时,应将其正确编码为 html。在 javascript 中,使用document.createTextNode(userData)
并附加该节点而不是使用 innerHTML。在 PHP 中,使用htmlentities
.
如果允许用户使用任何 html 或格式,您应该使用严格的允许标签和属性白名单来执行它们,并将其他所有内容编码为纯文本。
因此,即使用户确实输入了<h1>stuff</h1>
,当它被正确编码时,它也会以 html 的形式出现,<h1>test</h1>
而不是 html,它不会受到 javascript 注入的影响。