2012-08-02 37 views
2

我有一个与SignalR开发的聊天应用程序。在聊天中,用户发送消息,现在我想让它安全,以便用户不能发送JavaScript或类似的东西。我应该注意什么(即剥离标签)?聊天不会在数据库中进行,它只是将消息从一个用户的文本区域中继到所连接的其他用户的浏览器。将文本发送到其他客户端的浏览器有哪些漏洞?

回答

2

基本上你想防范XSS - 在“Escaping(aka Output Encoding)”中看到https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Escaping_.28aka_Output_Encoding.29

在输出到目标浏览器时,在源文件中输入的任何字符都应该使用HTML编码。这会将诸如<script>之类的序列转换为HTML以用于显示。

&lt;script&gt; 

个人而言,我不会刻意剥标签,相信输出消毒是被去,因为这是安全的,允许最大的自由度,为用户不受任何限制,如果用户希望通信(会发生什么方式向他人发送一段代码,你的应用程序将剥离掉所有的HTML标签?)。

+0

好的答案!我想知道是否有反正你可以把我推荐给输出消毒的例子,谢谢! – anthonypliu 2012-08-03 09:16:29

+0

你不说你是使用WebForms还是MVC?但无论哪种方式看看Server.HTMLEncode方法,这将做你在http://msdn.microsoft.com/en-us/library/w3te6wfz.aspx ...与MVC有一个这种方法的快捷方式,可以通过'<%:myString%>'(而不是'<%= myString%>')来访问。任何输出到浏览器的文本都应该这样编码。 – SilverlightFox 2012-08-06 10:55:07

相关问题