使用Javascript编辑和保存用户HTML——安全吗?

5
例如我有一个使用Javascript动力创建表单的工具。你可以使用链接添加html元素块(例如输入字段),并使用TinyMCE编辑文本。这些通过后台的autosave函数进行保存,并在特定事件上调用AJAX请求。

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

如果存在,这个功能有多安全呢?

首先,我应该搜索并删除接收到的HTML代码中的任何内联JavaScript。

使用PHP、JQuery、Ajax。


所有答案看起来都是正确的,但我会根据社区赞数选择最好的答案。谢谢大家! - Nick Zinger
3个回答

5

完全不安全。你永远不能相信客户端。即使对于初学者来说,在客户端修改DOM也很容易(例如只需在Firefox上安装Firebug)。

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


如果您需要清理用户输入的HTML,这是一个非常好的库:http://htmlpurifier.org/ - CD001

1

你是否将完整的内联HTML保存在数据库中?如果是这样,请尝试重新制作并仅将必要的数据保存到后端。此外,所有字段也应该受到控制,以确保它们以预期的方式接收。

所有内联JS都很容易被删除。

永远不要相信用户!


1

除非你采取安全措施,否则绝对不安全。StackOverflow允许某些标签,经过过滤以防止用户进行恶意操作。你肯定需要做类似的事情。

我建议在服务器端对输入进行清理,这样每个人都可以得到他们的输入被清理过的保证,无论他们是否已经阻止了脚本。使用像这样的东西:http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-from-HTML-code.htmlhttp://grom.zeminvaders.net/html-sanitizer 通过AJAX实现将是一个相当好的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接