我希望有人可以在此结束之前提供建议或提示,因为有人警告我这是一个主观问题。
我有自己的 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/