【问题标题】:How to prevent XSS in data binding expression in Asp.Net如何在 Asp.Net 中的数据绑定表达式中防止 XSS
【发布时间】:2020-10-23 02:10:32
【问题描述】:

我正在做一个安全工具在下面的代码中检测 xss 漏洞的项目

            <asp:DataList ID="lstForums" SkinID="lstForums2" runat="server">
                <ItemTemplate>
                    <tr>
                        <td>

                            <%# DataBinder.Eval(Container.DataItem, "Description")%>       
                        </td>
                    </tr>
                </ItemTemplate>
            </asp:DataList>

然后解决我添加HttpUtility.EncodeHtml如下

<%# HttpUtility.HtmlEncode(DataBinder.Eval(Container.DataItem, "Description"))%>  

但是安全扫描的结果还是一样,我应该怎么做那个代码xss证明?

注意:当我删除该行时,安全扫描将通过

【问题讨论】:

  • 不确定这是否重要,但您的绑定中还有一个额外的) Decription"))。不管怎样,你能试试这个&lt;%# Microsoft.Security.Application.AntiXss.HtmlAttributeEncode(DataBinder.Eval(Container.DataItem, "Description"))%&gt;,行吗?您需要确保导入 System.Web.Security.AntiXss 命名空间。
  • @Çöđěxěŕ 谢谢,那是错字;),由于项目是 .net 4 AntiXSS 不存在,我需要通过我不允许的 nuget 包添加它

标签: asp.net vb.net security xss secure-coding


【解决方案1】:

如果其他人有同样的问题,我找到了答案,

虽然 HttpUtiltiy.EncodeHtmlServer.EncodeHtml 做同样的事情,但安全工具 (checkmarx) 仅将 Server.EncodeHtml 视为 XSS 的阻止代码。

使用 HttpUtility

​​>

使用服务器

【讨论】:

  • 有趣,两者都不会停止注入脚本的执行,它确实涵盖了一些,但不是所有的向量。你用的是什么security tool
  • @Reza 不完全正确。 checkmarx 还考虑了 AntiXss.HtmlEncode、Encoder.HtmlEncode、HttpServerUtility.HtmlEncode、AntiXssEncoder.HtmlEncode、WebUtility.HtmlEncode
  • @Çöđěxěŕ 见附件截图
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多