使用 php 保护简单所见即所得的最佳方法
我在我的网站中添加了一个简单的所见即所得编辑器。 (它只允许 B / I / U - 不再)
我目前将所有内容以 html 形式存储在数据库中 - 但添加 或其他恶意代码很简单)
PHP 中解析此内容的最佳方法是什么输入安全吗? 如何将 、
等实现为白名单并对其他所有内容进行编码?
I have added a simple wysiwyg editor in my website. (it only allows B / I / U - no more)
I currently store all content as html in my database - but it's simple to add <a onclick='...'>
or other malicious code)
What is the best way in PHP to parse this input safely?
How to implement <b></b>
, <i></i>
and so on as whitelist and encode everything else?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
HTMLPurifier
我只是要把这个扔出去,可能会不可避免地受到批评。我不会使用
strip_tags
来保护您所见即所得的表单......永远(除非您想激怒您的用户)。它不会保护您的表单,并且您可能会扼杀用户的体验。
Chris Shiftlett 在他的博客文章中写了一段很棒的段落
另一个原因
其他人在另一个答案中也写了我喜欢的内容:
我得到的输出是:
我个人不会使用除 HTMLPurifier
HTMLPurifier
HTMLPurifier
在此处尝试演示:http://htmlpurifier.org/demo.php
看看这个类似问题
HTMLPurifier
I'm just going to throw this one out there and probably get the inevitable lashing. I would not use
strip_tags
to secure your WYSIWYG form... ever (Unless you want to piss off your users).It won't secure your form, and you may be killing your user's experience.
Chris Shiftlett in his blog post wrote an excellent paragraph
Another Reason
Someone else in another answer also wrote this which I like:
The output I get is:
I personally would not use anything other than HTMLPurifier
HTMLPurifier
HTMLPurifier
Try a demo here: http://htmlpurifier.org/demo.php
And look at this similar question
使用
strip_tags()
。 http://php.net/manual/en/function.strip-tags.php第二个参数是允许的标签列表;只需列出
''
,其余部分将被删除。请注意,正如 deceze 提到的:
因此它本身并不能提供针对恶意代码的全面保护!
Use
strip_tags()
. http://php.net/manual/en/function.strip-tags.phpThe second parameter is a list of allowable tags; just list
'<b><i><u>'
and the rest will be stripped.Do note that as deceze mentioned:
So it doesn't offer full protection from malicious code by itself!