rya*_*lit 5 c# asp.net security integer-overflow .net-security
我们在工作中使用Acunetix对我们的应用程序进行安全扫描.最近我们遇到了以下Integer Vulnerabilities错误:

据我所知,报告似乎告诉我们,我们并没有在查询字符串中阻止整数溢出攻击.虽然我们确实使用了最终解析为整数的查询字符串,但Convert.ToInt32()在我们使用之前,它们首先被加密然后解密并转换为int .我知道我们应该使用它TryParse(),但即使黑客要输入一个高于max的整数值,他们也会在尝试解密之前失败,甚至尝试转换为整数,这是我认为整数溢出的地方.这是除非在解密失败时发生错误?
我对此非常困惑,谷歌搜索没有太多帮助,因为大多数都与c ++等非托管语言有关,而不是c#和asp.net.任何帮助将非常感激.
我不认为这是一个整数溢出漏洞,我怀疑它指的是整数,因为这是在查询字符串中被操纵的类型(尽管我知道你说它们是加密的)。如果您正在将不受信任的用户输入直接转换为整数,而不是首先验证类型(正如您所说,首先尝试解析它),您可能会抛出一个内部错误(缺少任何 try/catch)并且这就是他们可能会注意到的。
自动扫描仪对 HTTP 500 错误有点疯狂。他们不知道幕后实际发生了什么以及错误有多严重,因此您可以认为这是误报。另一方面,您的安全人员会争辩说,如果机器人发现您经常因操纵查询字符串而抛出这些错误,那么很容易返回 HTTP 500 的网站更有可能受到进一步探测。
简单回答:“所有输入都必须根据可接受值范围的白名单进行验证。” (从这里)。