我正在为我的网页创建一个“HTML 编辑器”。目前,我只希望编辑器允许输入 HTML 和 CSS 元素,而不是 Javascript(或 Jquery)。
我正在尝试找到一种禁用<script>
的方法或<script type="text/javascript"> </script>
使用 PHP。然而,当前的方式输出了一个困惑的结果!
$content_in_before = str_replace('<script','',$content_in_before);
$content_in_before = str_replace('script>','',$content_in_before);
它的编码也不是很好!
是否有更可靠的编码方式,阻止所有类型的 Javascript 输入到此表单中? (同时仍然允许 CSS 和 HTML)?
提前致谢!
最佳答案
我建议使用清理库,例如 HTML Purifier ,因为刚刚剥离 <script>
标签不足以防止 XSS 攻击,因为 JS 可以使用 onLoad
等属性自动执行。 , onMouseOver
, onUnload
等
要删除标签并允许一些标签,您可以使用 PHP 的 strip_tags()
函数,但它不会去除属性,因此我建议使用 HTML 清理库。如果您能够运行它,也许最好的选择之一是 Google 的 Caja库,尽管它不能在共享托管环境中工作,因为它是用 Java 编写的,但它可以托管在 Google 的 AppEngine 上。
此外,简单的正则表达式解决方案并不总是可靠,因为即使格式错误的标签仍然可以被解析。例如,<script >
普通脚本标记的简单正则表达式检测不会捕获它,除非它在标记名称后面查找空格。可以检查这一点,但使用已建立的库可以节省您的时间,并且会给您带来经过考验的库的额外好处。
关于javascript - 禁用 JavaScript 进入表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576598/