2012-04-26 66 views
5

例如,我有一个Javascript-powered表单创建工具。您可以使用链接添加html元素(如输入字段)和TinyMCE来编辑文本。这些通过一个自动保存功能保存,在特定事件的后台执行AJAX调用。用Javascript编辑和保存用户HTML - 它有多安全?

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

这样安全吗,如果有的话?

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

使用PHP,JQuery,Ajax。

+0

所有的答案似乎是正确的,但我会与社区Upvote计数为最好的。谢谢大家! – 2012-04-26 09:08:48

回答

5

不安全。你可以永远不要相信客户端。即使是新手也可以在客户端修改DOM,例如安装Firebug for Firefox。

尽管可以接受来自客户端的HTML,但请确保使用PHP在服务器端正确验证和消毒。

+0

如果您需要清理用户输入的HTML,这是一个相当不错的库:http://htmlpurifier.org/ – CD001 2012-04-26 13:25:03

1

您是否将完整的inline-html保存在数据库中? 如果是这样,请尝试重新制作所有内容,并只将相关数据保存到后端。 所有领域也应该控制,如果他们以预期的方式收到。

所有inline-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实施将是一个很好的解决方案

+0

对于提供的解决方案 – 2012-04-26 09:09:16