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