例如,我有一个基于Javascript的表单创建工具。您使用链接添加元素的html块(如输入字段)和TinyMCE来编辑文本。这些是通过自动保存功能保存的,该功能在特定事件的后台进行AJAX调用。
被调用的保存函数可以保护数据库,但我想知道用户是否可以操作DOM来添加他想要的任何内容(如自定义HTML或不需要的脚本)。
这有多安全,如果有的话?
首先想到的是我应该从收到的HTML代码中搜索并删除任何内联javascript。
使用PHP,JQuery,Ajax。
答案 0 :(得分:5)
根本不安全。您可以永远不信任客户。即使是初学者也很容易在客户端修改DOM(例如,只安装Firebug for Firefox)。
虽然可以从客户端接受HTML,但请确保在服务器端使用PHP正确验证并清理它。
答案 1 :(得分:1)
您是否在数据库中保存了完整的inline-html? 如果是这样,尝试重新制作所有内容,只将nessesary数据保存到后端。如果按预期方式收到所有字段,也应该进行控制。
很容易删除所有inline-js。
您永远不会信任该用户!
答案 2 :(得分:1)
绝对不安全,除非你采取措施使其安全。 StackOverflow允许某些标签,过滤使用户无法做出恶意的事情。你肯定需要做类似的事情。
我选择清理输入服务器端,这样每个人都可以清理他们的输入,无论他们是否阻止了脚本。使用这样的东西:用AJAX实现的http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-from-HTML-code.html或http://grom.zeminvaders.net/html-sanitizer将是一个非常好的解决方案