php - 你会因为保存tinyMCE、QuillJS等文本编辑器生成的HTML代码而被黑客攻击吗?

标签 php mysql rich-text-editor

我希望有人可以在此结束之前提供建议或提示,因为有人警告我这是一个主观问题。

我有自己的 PHP+SQL 框架,由 Slim 和 Eloquent 组成,并计划在其中集成一个论坛,为了使其更加用户友好,我计划在论坛发帖中添加免费文本编辑器。

显然,这些文本编辑器通过 POST 发送 HTML 代码,我计划将它们保存在 MySQL 数据库中。由于它 Eloquent ,我很理解它已经处理了准备好的语句以避免注入(inject)。但我不太确定这是否足够安全,我正在浏览 phpBB,他们直到今天才拥有任何漂亮的文本编辑器(或者尚未开发 3.2),我浏览到他们担心安全性,我因为他们是那里的老兵,所以更加紧张。

你能通过这些简单的 HTML 代码进行注入(inject)吗?还有哪些其他攻击可以针对我的系统使用?

谢谢!

最佳答案

只要你escape在插入 SQL 查询之前的所有操作,数据库都是安全的...从最简单的 SQL 注入(inject)形式来看。

为了防止 JavaScript 注入(inject),您必须在插入数据库之前通过删除 <script> 来清理服务器端的标记。标签。您可能还想删除 iframe , link和表单标签。

您还必须在客户端配置内容过滤。例如,TinyMCE 有 invalid_elements option ,您可以在其中列出要删除的标签。

显然,系统支持的功能越多,风险就越大。例如,黑客可能上传一个名称包含 shell 表达式的文件,例如 $(rm -rf /www/).png 。因此,如果服务器上有人意外运行eval,服务器就会被黑客攻击。在这种类型的文件名上。另一个例子是上传看起来像和图像的脚本。

我想,列出更多可能的攻击系统的方法是没有意义的。您的问题的答案是:是的,可以使用流行的 Web 编辑器来攻击系统。因此,我建议尽量减少向用户公开的功能数量,并彻底清理用户输入,尤其是在服务器端

关于php - 你会因为保存tinyMCE、QuillJS等文本编辑器生成的HTML代码而被黑客攻击吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950245/

相关文章:

mysql - 当 “\n” 作为文本嵌入时格式化 SHOW ENGINE INNODB STATUS 输出

mysql - 如何从连接查询中获取一列的 DISTINCT 值

php - SQL 帮助 ~ 关系数据库模型 ~ 显示结果

javascript - 在编辑模式下保持 contenteditable 即使点击另一个 div

php - 如何使用 preg_replace 将字符串转换为小写

php - 重写规则 mod_rewrite 规则

php - 用户提交代码演示区的安全预防措施和技术

php - 以逗号分割 mySQL 结果

html - 任何不使用 HTML(contenteditable 或 designMode)的 WYSIWYG 富文本编辑器,如(新的)Google Docs?

javascript - 如何在数据库中存储富文本