Security “如何忽略”;脚本“;在url中?
我不熟悉JSP 我有以下url来调用我的应用程序:Security “如何忽略”;脚本“;在url中?,security,jsp,servlets,Security,Jsp,Servlets,我不熟悉JSP 我有以下url来调用我的应用程序: http://machine.domain.com:8383/eqube70/BuildNPlay 这非常有效,根据我的期望,它调用index.jsp 但如果我的请求url更改为: http://machine.domain.com:8383/eqube70/BuildNPlay/?--%3E%3C/script%3E%3Cscript%3Ealert('you got hacked')%3C/script%3E 然后我收到警报,我无法让我
http://machine.domain.com:8383/eqube70/BuildNPlay
这非常有效,根据我的期望,它调用index.jsp
但如果我的请求url更改为:
http://machine.domain.com:8383/eqube70/BuildNPlay/?--%3E%3C/script%3E%3Cscript%3Ealert('you got hacked')%3C/script%3E
然后我收到警报,我无法让我的应用程序正常工作。
这可能是执行请求url中的脚本
现在,我想在URL中的脚本传递到JSP之前,用某种方式忽略它
有什么方法可以实现这一点吗?您可以通过一个函数快速运行所有输入参数,该函数将所有<和>替换为其他内容
private String replaceGTLT(String str)
{
if(str==null) return null;
return str.replaceAll("<", "[").replaceAll(">", "]");
}
String parameterX = replaceGTLT(request.getParameter("parameterX"));
private String replaceGTLT(String str)
{
if(str==null)返回null;
返回str.replaceAll(“,”]);
}
字符串parameterX=replaceGTLT(request.getParameter(“parameterX”);
当然,[script]alert('you got hacked')[/script]
仍将在输入中,但由于将角括号更改为方括号,它将不会在浏览器中运行
param
隐式EL对象时要非常小心。这可能是用户提供的。您可以使用JSTL中的escapeXml
来转义内容您如何处理此特定页面的查询字符串参数?您的问题远不止是脚本。您似乎在返回的页面中嵌入了用户提供的参数。你需要从所有角度考虑它的安全性,而不仅仅是脚本。