检测到目标服务器存在应用程序错误 | 11 |
详细描述 | 如果***者通过伪造包含非应用程序预期的参数或参数值的请求,来探测应用程序(如以下示例所示),那么应用程序可能会进入易受***的未定义状态。 ***者可以从应用程序对该请求的响应中获取有用的信息,且可利用该信息,以找出应用程序的弱点。 例如,如果参数字段应该是单引号括起来的字符串(如在 ASP 脚本或 SQL 查询中),那么注入的单引号将会提前终止字符串流,从而更改脚本的正常流程/语法。 错误消息中泄露重要信息的另一个原因,是脚本编制引擎、Web 服务器或数据库配置错误。
以下是一些不同的变体: [1] 除去参数 [2] 除去参数值 [3] 将参数值设置为空值 [4] 将参数值设置为数字溢出(+/- 99999999) [5] 将参数值设置为危险字符,如 ' " \' \" ) ; [6] 将某字符串附加到数字参数值
| 解决办法 | [1] 检查入局请求,以了解所有预期的参数和值是否存在。 当参数缺失时,发出适当的错误消息,或使用缺省值。 [2] 应用程序应验证其输入是否由有效字符组成(解码后)。 例如,应拒绝包含空字节(编码为 %00)、单引号、引号等的输入值。 [3] 确保值符合预期范围和类型。 如果应用程序预期特定参数具有特定集合中的值,那么该应用程序应确保其接收的值确实属于该集合。 例如,如果应用程序预期值在 10..99 范围内,那么就该确保该值确实是数字,且在 10..99 范围内。 [4] 验证数据属于提供给客户端的集合。 [5] 请勿在生产环境中输出调试错误消息和异常。 |
|
转载于:https://blog.51cto.com/zhaoyingyatou/1421788