【发布时间】:2010-12-04 10:09:06
【问题描述】:
只是一个简单的问题.. 是否有任何好的做法来验证 HTML 嵌入代码? 仅供参考,我现在正在使用 Zend Framework 和原型+scriptaculous .. 如果有人能提供有关该环境的线索,那就太好了。
谢谢! ^^
【问题讨论】:
标签: php html zend-framework embed validation
只是一个简单的问题.. 是否有任何好的做法来验证 HTML 嵌入代码? 仅供参考,我现在正在使用 Zend Framework 和原型+scriptaculous .. 如果有人能提供有关该环境的线索,那就太好了。
谢谢! ^^
【问题讨论】:
标签: php html zend-framework embed validation
如果您想允许用户输入 HTML,然后将其显示在您的网站上,一个非常好的解决方案是HTMLPurifier。
它接受任何“种类”的 HTML 代码作为输入,并返回有效的 HTML,允许您指定必须允许哪些标签和属性——所有其他标签和属性都将被删除。
这样,如果你的用户输入了无效的 HTML,你仍然会得到有效的 HTML(输出时破坏你的布局的风险较小),如果你只指定了几个非- 危险的标签和属性,这是安全性的一大优势。
如果您想在无需将其集成到您的应用程序的情况下试用它,可以使用demo page,顺便说一句。
例如,如果我输入这样的内容:
<p>
this <b>is a<i>test</b></i>
with a not <em>closed tag
and a <a href="http://google.com" onclick="alert('bouh');">link</a>
and some <script type="text/javascript>alert('script');</script>
</p>
我得到的 HTML 为 output will be :
<p>
this <b>is a<i>test</i></b>
with a not <em>closed tag
and a <a href="http://google.com">link</a>
and some </em></p>
ie标签正常(关闭,按正确顺序),脚本标签已被移除,链接的onclick属性也被移除。
【讨论】:
您的问题有点模糊,但听起来您正在提交 html,并且您想在您的网站上重新显示它。
最好的办法是找出一组可接受的 HTML,并去掉所有不匹配的标签。
【讨论】: