我有一个名为 comment 的输入。用户将其评论写入其中并在帖子下发送。像StackOverflow的评论:
如您所见,新评论中有<a>
个标记。它将存储在数据库中,如下所示:
当我再次获取它时,它会破坏我网站的HTML:
我的意思是<a>
之后的所有内容都是链接。我不希望这样。我该如何防止这种情况发生?
答案 0 :(得分:4)
如果您不想存储任何标记,请使用strip_tags
,如果您仍希望标记,请使用Parsedown之类的内容。
示例强>
$string = '<b>Hello,<> please remove the <> tags.</b>';
echo strip_tags($string);
<强>输出强>
Hello, please remove the tags.
<强>更新强>
您实际需要的是htmlspecialchars
。
<?php
$str = 'Hello <a href="">blah</a>.';
echo htmlspecialchars($str, ENT_QUOTES);
?>
<强>输出强>
Hello <a href="">blah</a>.
答案 1 :(得分:0)
你可以使用一些插件在wordpress上做的更改&lt;和&gt;对于[和]。
为了防止代码注入,我建议只替换以下标记
<p></p><ul></ul><li></li><a></a>
这是通过客户端的javascript完成并发送到服务器víaajax:
$("yourtag").replace(/</g, "[").replace(/>/g, "]").replace(/"/g, "'").replace(/ /g, "andnbsp");
如果您使用php从数据库中检索数据,则需要在存储html的列上使用strreplace,使用&lt;&gt;更改[],这样您的代码就不会中断了<登记/>
请记住,只允许您想要的标签允许所有类型的标签打开门,以确保安全,这是在服务器端语言上提供的。
希望这有用......