Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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_Jsp_Servlets - Fatal编程技术网

java中参数和值的范围

java中参数和值的范围,java,jsp,servlets,Java,Jsp,Servlets,这句话的意思是什么: 验证参数值是否在其预期范围和类型内。不要 输出调试错误消息和异常 这是我申请的审核报告。此处的参数是身份验证模块的用户名和密码 理由: 应用程序已响应一条错误消息,指示可能出现的未定义状态 暴露敏感信息 范围和类型:表示您应该检查字符串长度、允许的字符顺序、数据类型(如果尚未完成) 一般来说,在身份验证过程中,应该只指示用户名/pwd可能是错误的,而不指示是哪一个。任何其他信息都可能提供对您的身份验证机制的深入了解,了解它如何因特定输入类型而失败以及可能被误用。当身份验证失

这句话的意思是什么:

验证参数值是否在其预期范围和类型内。不要 输出调试错误消息和异常

这是我申请的审核报告。此处的参数是身份验证模块的用户名和密码

理由: 应用程序已响应一条错误消息,指示可能出现的未定义状态
暴露敏感信息

范围和类型:表示您应该检查字符串长度、允许的字符顺序、数据类型(如果尚未完成)
一般来说,在身份验证过程中,应该只指示用户名/pwd可能是错误的,而不指示是哪一个。任何其他信息都可能提供对您的身份验证机制的深入了解,了解它如何因特定输入类型而失败以及可能被误用。

当身份验证失败时,您不得向用户提供任何信息

您必须不要

  • 指示登录名是否不存在(或者我可以使用bruteforce列出用户)
  • 指出密码是否错误(或者我可以猜测用户是否存在并列出他们)
  • 指示帐户是否已停用(让黑客释放时间)
  • 在日志中打印错误的密码(因为某些真正的用户在键入密码时会失败,并且会让一些接近的密码出现在日志文件中)
  • 打印真实密码,无论是否经过哈希/加密
  • 打印任何与密码链接的内容
始终返回“不正确的登录或密码”

另请注意:许多开发人员将密码存储在字符串中,这是一个非常糟糕的想法,因为您无法访问字符串生命周期。这意味着密码仍然存在于JVM中的某个地方。希望将它们存储在char[]中,并尽快清除


这也意味着您不能打印任何允许在JVM中查找代表用户的对象的内容。

这只是意味着,不要通过
System.out.println()
logger.log()
消息或抛出异常来显示验证失败。相反,只需在输入字段的旁边或上方以完全相同的HTML格式显示它们。在中,您可以找到这种验证方法的基本示例。当用户无法验证时,用户一定不知道原因(不存在登录?密码错误?停用用户?)。进行您需要的检查,但如果任何检查失败,只需打印“不正确的登录或密码”。不要在文件中记录任何内容,因为您可能会记录真实密码或一些允许查找密码的信息。非常感谢@BalusC。现在我非常清楚了。另外,在try catch块中,我是否应该System.out.println()在catch中捕获异常?thanx alot@arnauddenoyelle这个问题不是基于代码的。所以我没有附加任何代码。我想理解这句话。因为我对这份声明非常不清楚。但现在我很清楚,问题不是打印异常,而是只打印“不正确的登录名和密码”。我将request.getParameter(“密码”)存储在字符串中,而不是在会话中。这是个坏习惯吗?是的。您不需要将密码返回到JVM。密码应该在数据库中进行散列或加密,您只需从LOGIN=?并将\u PASSWORD=?哈希化,然后将密码放入准备好的查询中(永远不要使用关联查询)。如果查询返回了一些信息,那么密码是正确的。此外,审计员在原始reuest中进行了这些更改删除了参数“username”•添加了参数“username”。使用以下值“sdfsdf”•删除了cookie“JSESSIONID”•删除了HTTP头“cookie=JSESSIONID”我还添加了最大登录错误数,在HTTP中,由于您无法跟踪客户端,它只需清除cookie,即验证码式解决方案,以减少暴力攻击。