如何验证 Summernote 中的文本 - Php
Posted
技术标签:
【中文标题】如何验证 Summernote 中的文本 - Php【英文标题】:How to validate text from Summernote - Php 【发布时间】:2014-06-02 12:25:40 【问题描述】:我有一些关于如何避免Xss注入和删除标签的问题:
我正在使用sommernote,我想允许一些标签,如<br>, <p>, <strong>, etc.
。我可以使用函数 strip_tags() 但如果有人写符号更大 (>) 或更少 (
(4 > 5)。
这已被删除,我想保留它。
此外,我需要知道输入文本的正确长度,因为我不想允许超过 N 个字符,比如说不超过 300 个字符。为了得到这个,我会使用 strip_tags() 但字符串被截断,正如我之前提到的。我该怎么做?
显然,我想避免 XSS 注入,所以我会使用htmlentities(strip_tags(string), ENT_QUOTES)
保存在数据库中,当我想在主页中显示内容时,我会使用 html_entity_decode(string),这足以避免它吗?
提前致谢
【问题讨论】:
我建议使用HTML Purifier。在实施安全措施时,最好使用一个广泛且经过良好测试的库,而不是自己创建一些东西。 【参考方案1】:不要使用 strip_tags!如果用户尝试输入类似The bob said <the-secret>
的内容,它将被删除! htmlentities
是不必要的。你要htmlspecialchars
:
$input = "<script>alert('ur screwed')</script>";
echo htmlspecialchars($input);
返回&lt;script&gt;alert('ur screwed')&lt;/script&gt;
。使用htmlspecialchars_decode
解码。
【讨论】:
其实我是想说htmlspecialchars(),搞糊涂了。我的问题是,如果我使用 htmlspecialchars_decode() 在主页中显示,我会写成原句,在这种情况下:<script>alert('ur screwed')</script>
或者我错了?
您不需要解码(通常)。存储在数据库中,当它出来时做一个 htmlspecialchars。
好的,但我想显示是否有人写 <pr>something</p>
,因为我正在使用 sommernote,如果我使用 htmlspecialchars() 保存,我将不得不使用 htmlspecialchars_decode() 来显示它在浏览器上可以很漂亮。
这将是一个额外的复杂性之后你编码数据。在进入数据库之前不要对数据进行编码,而是在之后进行。 This 可能会有所帮助(并且会造成混淆)。以上是关于如何验证 Summernote 中的文本 - Php的主要内容,如果未能解决你的问题,请参考以下文章