【问题标题】:Best URL Encoding technique in c#c# 中的最佳 URL 编码技术
【发布时间】:2015-05-07 20:56:07
【问题描述】:

我有一个href,它通过从这样的数据库中读取属性来填充

  lblName.HRef = user.PublicSiteUrl; 

我想对该 URL 进行安全编码,以防止任何持续的 XSS 攻击。

哪种编码应该对此有用而不会对 URL 结构造成任何问题?

例如,如果我的这个 URL 来自数据库 https://google.com?q=<SCRIPT>alert(“Cookie”+document.cookie)</SCRIPT> ..我如何使这个 URL 安全,这样脚本就不会作为 URL 的一部分执行

【问题讨论】:

    标签: c# url-encoding


    【解决方案1】:

    为什么不HttpUtility.UrlEncode

    【讨论】:

    • Console.WriteLine(HttpUtility.UrlEncode("Test/k=<script>alert("hacked")</…)); 这不起作用。
    • @user3637345 如果您有一个想要测试的测试场景,为什么不一开始就将它添加到您的问题中?
    • 对不起,我没有这样的场景。我只是想看看是否有内置类可以防止任何 XSS 攻击。
    • @user3637345 您如何期望某些东西能够真正保持 url 的完整?如果检测到威胁,不应该完全阻止请求吗?
    • 在问题中添加了一个示例
    【解决方案2】:

    我想你要找的是Uri.EscapeUriString()

    https://server/test.aspx?<SCRIPT>alert(“Cookie”+document.cookie)</SCRIPT>
    

    会变成:

    https://server/test.aspx?%3CSCRIPT%3Ealert(%E2%80%9CCookie%E2%80%9D+document.cookie)%3C/SCRIPT%3E
    

    【讨论】:

    • 这对我有用..你知道是否存在绕过这种编码的 XSS 攻击。
    • 这应该可以防止标签被插入,但我想如果有人输入javascript:alert('hi'),你仍然会遇到问题。也许您还可以检查 url 是否以 http:// 或 https:// 开头。另外,这篇文章有一些很好的信息stackoverflow.com/questions/205923/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2017-05-24
    • 2013-07-06
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-31
    相关资源
    最近更新 更多