Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security “如何忽略”;脚本“;在url中?_Security_Jsp_Servlets - Fatal编程技术网

Security “如何忽略”;脚本“;在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 然后我收到警报,我无法让我

我不熟悉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
然后我收到警报,我无法让我的应用程序正常工作。 这可能是执行请求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]
仍将在输入中,但由于将角括号更改为方括号,它将不会在浏览器中运行

  • 不要使用Scriptlet,JSTL会为您转义内容
  • 使用
    param
    隐式EL对象时要非常小心。这可能是用户提供的。您可以使用JSTL中的
    escapeXml
    来转义内容
  • 你可以编写一个ServletFilter,在你不想要的东西触动你的Web应用之前过滤掉它们
  • 最后,您需要一个具有可靠XSS预防功能的框架。检查

  • 您如何处理此特定页面的查询字符串参数?您的问题远不止是脚本。您似乎在返回的页面中嵌入了用户提供的参数。你需要从所有角度考虑它的安全性,而不仅仅是脚本。