使用 Javascript 编辑和保存用户 HTML - 它有多安全


Editing and Saving user HTML with Javascript - how safe is it?

例如,我有一个Javascript驱动的表单创建工具。您可以使用链接添加元素的 html 块(如输入字段)和 TinyMCE 来编辑文本。这些是通过自动保存函数保存的,该函数在特定事件的后台执行 AJAX 调用。

被调用的 save 函数执行数据库保护,但我想知道用户是否可以操纵 DOM 来添加他想要的任何内容(例如自定义 HTML 或不需要的脚本)。

这有多安全,如果有的话?

首先想到的是,我可能应该搜索并从收到的 html 代码中删除任何内联 javascript。

使用 PHP、JQuery、Ajax。

一点也不安全。你永远不能信任客户。即使是新手也很容易在客户端修改 DOM(例如,只需安装 Firefox 的 Firebug)。

虽然接受来自客户端的 HTML 是可以的,但请确保在服务器端使用 PHP 正确验证和清理它。

您是否将

完整的内联 html 保存在数据库中?如果是这样,请尝试重新制作所有内容,并且仅将 nessesary 数据保存到后端。如果以预期的方式接收所有字段,也应控制它们

所有内联js都很容易删除。

永远不能信任用户!

绝对不安全,除非你采取措施让它安全。StackOverflow允许某些标签,过滤,以便用户不能做恶意的事情。你肯定需要做类似的事情。

我选择清理输入服务器端,以便每个人都清理他们的输入,无论他们是否阻止了脚本。 使用这样的东西: 使用 AJAX 实现的 http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-from-HTML-code.html 或 http://grom.zeminvaders.net/html-sanitizer 将是一个非常好的解决方案