gpt4 book ai didi

javascript - 防止内容可编辑 div 中脚本注入(inject)的最佳方法

转载 作者:行者123 更新时间:2023-11-28 00:41:09 25 4
gpt4 key购买 nike

我正在开发一个项目,其中使用内容可编辑的 div 和一个库,medium.js但这并不能阻止脚本注入(inject)。防止将任何类型的脚本注入(inject)到我的 div 中的最佳方法是什么?

最佳答案

我假设您将编辑后的信息发送到服务器,将其存储在数据库中,以便稍后在网站中保存和呈现?您希望允许用户在输入中使用某些 HTML 代码吗?

在这种情况下,您需要在服务器端实现“HTML 清理程序”。对于 PHP 有 HTMLPurifier ,对于 Python 有 Bleach ,Ruby 有一个sanitize module 。这些只是示例,还有更多,当然您也可以(小心!)编写自己的 sanitizer 。清理程序会过滤字符串,以便仅将纯文本和 HTML 标签和属性输入到数据库中,而无需任何脚本函数。请参阅Wikipedia - HTML Sanitization了解最适合您的方法。

在编辑内容时使用 Javascript 过滤是不够的,因为攻击者总是可以通过分析您的网站将内容直接发布到您的服务器,并将代码留在数据库中。

但是,您可以在数据库中允许它并在提供内容时进行清理(因此它永远不会显示),但最好在提交时将其过滤掉。如果您想清理要显示的 HTML 客户端,您可以使用类似 Google Caja 的内容。图书馆。如果您采取这种方式,并且如果您实现了不同的前端,请务必清理数据库中的内容。

其他选项可能是完全禁用 HTML 输入(仅允许文本,剥离所有标签)。或者执行流行的Markdown语法,就像 StackExchange 网站和 Reddit 等流行网站所做的那样。老BBcode方法始终是 PHP 中的一个选项,并且它作为富文本输入法在论坛上仍然很受欢迎。

关于javascript - 防止内容可编辑 div 中脚本注入(inject)的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27915841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com