首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><>的转义/切割是否会阻止您脱离XSS?

<>的转义/切割是否会阻止您脱离XSS?
EN

Security用户
提问于 2018-09-07 13:26:40
回答 1查看 180关注 0票数 1

我有一个输入,它在页面的一个框中显示一个值(Firstname)。在服务器端,通过以下规则(vb.net)转义输入:

代码语言:javascript
复制
Public Function UnescapeString(strValue As String) As String
    If (String.IsNullOrEmpty(strValue)) Then Return strValue
    strValue = Replace$(strValue, """", "")
    strValue = Replace$(strValue, "'", "")
    strValue = Replace$(strValue, "<", "")
    strValue = Replace$(strValue, ">", "")
    Return strValue
End Function

输出完全没有验证。

我不敢相信逃离<>的输入会如此安全,就像我觉得的那样!?

是否存在注入代码的窍门,或者是防止XSS在这里、切断或逃避<>标记的最主要的东西?

问题2:我计划像这样重写这个方法:

代码语言:javascript
复制
   strValue = Replace$(strValue, """", """)
   strValue = Replace$(strValue, "<", "<")
   strValue = Replace$(strValue, ">", ">")
   strValue = Replace$(strValue, "&", "&")
   strValue = Replace$(strValue, "'", "'")
   strValue = Replace$(strValue, "/", "/")
   strValue = System.Web.HttpUtility.HtmlEncode(strValue) <- or only this

我计划不删减,而是正确地转义值,如上面的示例所示。或者我只使用.NET的HtmlEncode (最后一行),它甚至编码特殊字符,如德国货币,以及危险的标志,如<>"'/

EN

回答 1

Security用户

发布于 2018-09-07 13:37:39

问题是,您可以使用其他编码(如base64 )来创建一个成功的XSS,而不是使用HttpContext.Current.Server.HtmlEncode()。

示例:

代码语言:javascript
复制
$ echo '' | base64 
PHNjcmlwdD4K
$echo PHNjcmlwdD4K | base64 -D
<script></code></pre><div>Javascript示例:</div><pre><code> var decodedData=window.atob('PGlmcmFtZSBzcmM9L3hzcy9iYXNlLmh0bWwgd2lkdGg9MTAwJSBoZWlnaHQ9MTAwJT48L2lmcmFtZT4K');
     document.write(decodedData);</code></pre><div>如果是这样的例子:</div><pre><code>src=data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4K</code></pre><div>另外,您可能不会在代码的生命周期内维护这段代码,一个新的漏洞可能会绕过您的过滤器,希望.NET的维护人员能够发布一个更新,以解决这个问题,并由sys应用。</div>
票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/193231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档