【发布时间】:2015-09-06 03:12:42
【问题描述】:
所以我有一个小问题。我正在开发的 PHP 程序有时允许网页设计师发布一些代码,并被放入后端数据库。有时设计师可能还想讨论 html 实体。
假设设计者向数据库中添加了这样一行代码:
<p>hellos friend</p>
所以我使用 PDO 将这条线粘贴到数据库中而不转义它,一切都很好,它显示得很好。现在,我希望网页设计师能够对其进行编辑,因此当我将其从数据库中提取出来时,我会使用以下代码:
$post = htmlentities($post);
现在我可以将它插入到我的编辑器中了:
<textarea>$post</textarea>
但是我们遇到了问题,因为当这个人编辑这段代码时,他提交并返回到数据库中,现在它得到了 HTML 实体并且有 & lt ; 而不是 & gt ; 而不是 >(很难在 SA 上输入它,它会重新编码)
<p>hellos friend</p>
所以现在它在数据库中是错误的,所以当我再次显示它时,它会显示实体。
所以也许我可以在编辑后运行 htmlentities 的反面并重新添加所有实体,如果有这样的事情,但这会带来另一个问题:
如果网页设计师告诉其他人“嘿,这就是一个 html 实体,它的类型是这样的:& lt; 你应该使用它”
然后那将被证明是回到不是一个实体,你明白我的意思吗?有溶质吗?
【问题讨论】:
标签: php textarea xss html-entities