0

我有一个文本框和提交按钮,用于发布内容并回复 HTML 页面。有什么办法(除了检查字符串开头的子字符串是否是

    <h1>,<h2>,<h3>...,<script>,<style>,etc.

查看一个字符串在页面上发布时是否会采用不同的格式,以防止代码注入?

谢谢

-扎克

4

1 回答 1

1

显示用户数据时,应将其正确编码为 html。在 javascript 中,使用document.createTextNode(userData)并附加该节点而不是使用 innerHTML。在 PHP 中,使用htmlentities.

如果允许用户使用任何 html 或格式,您应该使用严格的允许标签和属性白名单来执行它们,并将其他所有内容编码为纯文本。

因此,即使用户确实输入了<h1>stuff</h1>,当它被正确编码时,它也会以 html 的形式出现,&lt;h1&gt;test&lt;/h1&gt;而不是 html,它不会受到 javascript 注入的影响。

于 2013-11-09T01:50:23.033 回答