【发布时间】:2012-08-02 17:06:54
【问题描述】:
我有一个正在使用 SignalR 开发的聊天应用程序。在聊天中用户发送一条消息,现在我想让它安全,这样用户就不能发送 javascript 或类似的东西。我应该注意什么(即剥离标签)?聊天不会进入数据库,它只是将消息从一个用户的文本区域中继到连接的其他用户的浏览器。
【问题讨论】:
我有一个正在使用 SignalR 开发的聊天应用程序。在聊天中用户发送一条消息,现在我想让它安全,这样用户就不能发送 javascript 或类似的东西。我应该注意什么(即剥离标签)?聊天不会进入数据库,它只是将消息从一个用户的文本区域中继到连接的其他用户的浏览器。
【问题讨论】:
基本上你想防范 XSS - 请参阅此处的“转义(又名输出编码)”下的 https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet#Escaping_.28aka_Output_Encoding.29。
在源中输入的任何字符在输出到目标浏览器时都应进行 HTML 编码。这会将<script> 之类的序列转换为 HTML 以进行显示,例如
<script>
就我个人而言,我不会打扰剥离标签,我相信输出清理是要走的路,因为这是安全的,并且可以让用户不受限制地进行交流(如果用户想向某人发送 sn 会发生什么) -p 代码并且您的应用程序正在剥离所有 HTML 标记?)。
【讨论】:
<%: myString %>(而不是<%= myString %>)访问此方法的快捷方式。任何输出到浏览器的文本都应该以这种方式编码。