"onmouseover"关键字 xss 的 ASP 经典筛选器



这是互联网上的一个冗余问题,但没有简单的答案。我知道我不会简单地通过过滤来摆脱所有XSS,但我想从它开始。我目前正在使用JScript(而不是通常的VBScript)编写的服务器代码进行ASP Classic项目。我们发现我们很容易受到一些XSS攻击。其中一个很难摆脱,因为我不是javascript大师。当你使用像下面这样的URL时,攻击就成功了。

http://mysite/default.asp?NumVol=%20onmouseover=%22alert%28document.cookie%29%22%20style=%22font-大小:999999999999像素;%22%20href=

我尝试了HTMLEncode,NumVol参数字符串上的替换方法。。。但它仍然显示cookie。我所寻找的只是一个小的替换方法、regex或任何简单的东西来管理特定的情况。

这是一个旧的生产应用程序,他们不想在上面花太多时间。只是一些安全基础。我们现在肯定不会安装一个依赖.NET的库(比如OWASP)来解决这个问题,因为我们很快就会在.NET中重建应用程序。

编辑

这是我尝试过的一个示例代码。你可以看到我使用HTMLEncore加上一些带有"替换"的过滤器。"%"字符在那里,但它不起作用,因为onmouseover是写的。我需要的是Javascript中的语法示例(regex或someting),我可以在这种情况下应用它。

var sPage = "" + Request.ServerVariables ( "SCRIPT_NAME" );
var NumVol = Request.QueryString("NumVol");
var comp = Request.QueryString("comp")
var nav = Request.QueryString("nav");
var NoEle = Request.QueryString("NoEle");
var NoCons = Request.QueryString("NoCons");
if (Lg=="en")  {
var pageSourceValid = Server.HTMLEncode(sPage + "?Lg=fr");
Response.Write("<a href=");
if ((NumVol+"" != "undefined") && (NumVol+"" != "")) {
pageSourceValid += "&NumVol=" + NumVol.replace(/<|>|"|'|%|;|(|)|&|+|-/g,"");
}
if ((nav+"" != "undefined") && (nav+"" != "")) {
pageSourceValid += "&nav=" + nav.replace(/<|>|"|'|%|;|(|)|&|+|-/g,"") + "";
}
if ((comp+"" != "undefined") && (comp+"" != "")) {
pageSourceValid += "&comp=" + comp.replace(/<|>|"|'|%|;|(|)|&|+|-/g,"") + "";
}
if ((NoEle+"" != "undefined") && (NoEle+"" != "")) {
pageSourceValid += "&NoEle=" + NoEle.replace(/<|>|"|'|%|;|(|)|&|+|-/g,"") + "";
}
if ((NoCons+"" != "undefined") && (NoCons+"" != "")) {
pageSourceValid += "&NoCons=" + NoCons.replace(/<|>|"|'|%|;|(|)|&|+|-/g,"") + "";
}
Response.Write(Server.HTMLEncode(pageSourceValid));
Response.Write (" class=lienBanniere>");
Response.Write ("Français");
Response.Write ("</a>");

}

输出值时使用html属性转义和html转义。

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

最新更新