javascript - 禁用 JavaScript 进入表单

标签 javascript php jquery html

我正在为我的网页创建一个“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 >普通脚本标记的简单正则表达式检测不会捕获它,除非它在标记名称后面查找空格。可以检查这一点,但使用已建立的库可以节省您的时间,并且会给您带来经过考验的库的额外好处。

示例: Script Tags with Spaces producing an alert

关于javascript - 禁用 JavaScript 进入表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27576598/

相关文章:

javascript - 转换属性值为 : "HH:MM:SS" to string "N Minutes"? 的对象的更快方法是什么

javascript - 直接在 Canvas 上设置路径的 alpha channel 中的每个点

javascript - 获取当前值输入字段数量 Woocommerce

php - index.php 中的多个 jquery 对话框

javascript - 在不影响第一行的情况下,每隔一行缩进表格。 html/css/js/jQuery

javascript - 单击时显示子 Div

jquery - 如何在 HTML 中使用 CSS 设置下拉菜单的样式

javascript - 测试函数中的函数是否被返回

javascript - Webix Datatable onclick 无法获取选定行数据

php - 如何从字符串发送带有 CSV 附件的电子邮件