Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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
java中的响应头验证_Java_Security_Http_Response_Split - Fatal编程技术网

java中的响应头验证

java中的响应头验证,java,security,http,response,split,Java,Security,Http,Response,Split,我在响应头中直接传递一个用户定义的参数。据我所知,这不是一个好主意,因为用户可以通过这种方式操纵头部,这可能导致跨站点脚本攻击和其他类型的多重攻击 为了防止出现这种情况,我正在通过将“\r”和“\n”字符替换为空字符串“”来验证“http响应拆分”的用户输入。这足够了吗?或者我还要检查其他字符。任何指点都会大有帮助 这是我的密码 if(response != null) { newResponse = response.replaceAll("[\r\n]", ""); } 这

我在响应头中直接传递一个用户定义的参数。据我所知,这不是一个好主意,因为用户可以通过这种方式操纵头部,这可能导致跨站点脚本攻击和其他类型的多重攻击

为了防止出现这种情况,我正在通过将“\r”和“\n”字符替换为空字符串“”来验证“http响应拆分”的用户输入。这足够了吗?或者我还要检查其他字符。任何指点都会大有帮助

这是我的密码

if(response != null)
  {
   newResponse = response.replaceAll("[\r\n]", "");
  }

这是否足以防止此类攻击,或者我还应该验证其他字符。

您提供的信息不足以提供正确的答案。我们需要知道您如何处理参数值,以便判断您的操作是否足够好,以及您的代码在什么样的环境中运行。一个简短、100%正确(但毫无用处)的答案是“不”


安全性不是通过遵循原始上下文之外的简单项目符号来实现的。您从Python上下文中获取它,并将其直接放到Java上下文中。您必须完全了解您的环境和代码的功能。没有银弹。

白名单比黑名单安全得多。是否可以使用白名单取决于您对用户定义参数的了解程度

详情如下:


误解了问题的一部分,因此删除了一条不相关的评论。+1加入白名单。指定允许的字符。不要假设您对所有可能的攻击向量和攻击场景有足够的了解,这样您就可以枚举并禁止所有可能的恶意字符串/字符。总会有一个你想不到的,尤其是在unicode的世界里——甚至是格式错误的unicode代码点。我正在响应中传递一个文件名。我已将正则表达式更改为。if(response!=null){newResponse=response.replaceAll(“[^\\\\\\\ U a-zA-Z0-9-./]”,“”);}@artbristol感谢您的帮助。