我有一些关于如何避免Xss注入和删除标签的问题:
我正在使用sommernote,我想允许一些标签,例如<br>, <p>, <strong>, etc.
。我可以使用函数strip_tags()但是如果有人将符号写为更大(&gt;)或更少(&lt;),例如:
(4> 5)。
这已删除,我想保留它。
此外,我需要知道所输入文本的正确长度,因为我不想允许超过N个字符,让我们说不超过300个字符。为了得到这个,我会使用strip_tags()但是字符串被截断,如前所述。我怎么能这样做?
显然,我想避免XSS注入,所以我会使用htmlentities(strip_tags(string), ENT_QUOTES)
保存在DB中,当我想在主页面显示内容时我会使用html_entity_decode(string),这是否足以避免它?
提前致谢
答案 0 :(得分:2)
不要使用strip_tags!如果用户尝试输入The bob said <the-secret>
之类的内容,则会将其删除! htmlentities
是不必要的。你想要htmlspecialchars
:
$input = "<script>alert('ur screwed')</script>";
echo htmlspecialchars($input);
返回<script>alert('ur screwed')</script>
。用htmlspecialchars_decode
解码。