各位大虾好。新手请教一个问题。在如下地址,
login.jsp?returnURL=%2FECS%2Fmodules%2Fframe%2Findex.jsp%22%3e%3csCrIpT%3ealert(81116)%3c%2fsCrIpT%3e如何处理这个跨脚本攻击问题?
我在jsp里面修改了returnURL,
部分代码如下 String returnURL = request.getParameter("returnURL");
if (null == returnURL)
{returnURL = "";}
else
{ returnURL=returnURL.replaceAll( "<","<");
returnURL=returnURL.replaceAll( ">",">");
} String returnURL0 = request.getParameter("RETURNURL"); //对这些参数解码
if(returnURL0 != null && returnURL0.length() != 0) {
returnURL0 = new String(returnURL0.getBytes("ISO-8859-1"), "UTF-8");
returnURL0 = URLDecoder.decode(returnURL0, "UTF-8");
returnURL0=URLEncoder.encode(returnURL0, "UTF-8"); }这样确实避免了alert()运行,
请问还有其他工作要做的吗?不止是replace“<”“>”,还要屏蔽其他字符吗
login.jsp?returnURL=%2FECS%2Fmodules%2Fframe%2Findex.jsp%22%3e%3csCrIpT%3ealert(81116)%3c%2fsCrIpT%3e如何处理这个跨脚本攻击问题?
我在jsp里面修改了returnURL,
部分代码如下 String returnURL = request.getParameter("returnURL");
if (null == returnURL)
{returnURL = "";}
else
{ returnURL=returnURL.replaceAll( "<","<");
returnURL=returnURL.replaceAll( ">",">");
} String returnURL0 = request.getParameter("RETURNURL"); //对这些参数解码
if(returnURL0 != null && returnURL0.length() != 0) {
returnURL0 = new String(returnURL0.getBytes("ISO-8859-1"), "UTF-8");
returnURL0 = URLDecoder.decode(returnURL0, "UTF-8");
returnURL0=URLEncoder.encode(returnURL0, "UTF-8"); }这样确实避免了alert()运行,
请问还有其他工作要做的吗?不止是replace“<”“>”,还要屏蔽其他字符吗
2,仿照阿里巴巴 的淘宝 对各个参数 按一定顺序并接后 处md5理 具体见淘宝开源api
即使你屏蔽了一些特殊字符,而攻击者可以使用Unicode码直接发送,
就类似于这样:\u2356这样的代码你是屏蔽不了的。