如何避免恶意发送聊天室应用程序

时间:2010-11-19 11:39:55

标签: javascript html

我正在做一个聊天室网站,目前用户可以在输入框中输入他们喜欢的内容并将其发送给所有在线用户。但是,一旦有一些坏人发送恶意的html / javascript代码来打破所有其他用户,我担心它不安全吗?

如何避免这种情况发生?

4 个答案:

答案 0 :(得分:3)

每个人都说过的是对的;您需要在将所有数据发送给用户之前对其进行编码。

我只是想补充一下:确保你在服务器上执行此编码,使用您正在使用的Web框架提供的内置(因此经过良好测试)方法

不要尝试在客户端的JavaScript中执行此操作;还有一些用户可以输入的恶意代码会破坏JavaScript本身。

并且,尝试'推出自己的'编码机制,也不尝试使用黑名单方法,在这种方法中,您只尝试找到某些“坏”有人可以进入的东西,并取而代之。你永远不会猜到所有“坏事”是什么。

您没有提及您的Web框架,但大多数都有内置功能,HTML编码整个字符串,以便字符串将在浏览器中显示,无论 内容是什么在它。

答案 1 :(得分:2)

确保编码您发送的所有内容,无论如何都要执行此操作。例如,如果用户键入<,您可能希望它显示为<而不是启动HTML标记。因此,如果将输出输出到HTML页面中,则需要将其作为&lt;转义。这会阻止人们输入HTML标签(如果他们无法发送HTML,发送script标签会很棘手)。

最低你需要进行编码,即使只是为了让输出正确(更不用说防止恶意输出)< =&gt; &lt;& =&gt; &amp;。我也经常做> =&gt; &gt;也只是为了彻底,因为我不禁想到某天,某种程度上,它会变得重要。 : - )

答案 2 :(得分:1)

一种方法是将所有HTML转换为操作码。因此,不要发送<,而是发送&lt;

这样代码将在键入时显示,但不应执行。

答案 3 :(得分:1)

如果您使用的是PHP,则可以使用strip_tags()删除您指定的任何标记,但如果您选择允许,则仍允许使用某些HTML。