我们在工作中使用Acunetix对我们的应用程序进行安全扫描.最近我们遇到了以下Integer Vulnerabilities错误:

据我所知,报告似乎告诉我们,我们并没有在查询字符串中阻止整数溢出攻击.虽然我们确实使用了最终解析为整数的查询字符串,但Convert.ToInt32()在我们使用之前,它们首先被加密然后解密并转换为int .我知道我们应该使用它TryParse(),但即使黑客要输入一个高于max的整数值,他们也会在尝试解密之前失败,甚至尝试转换为整数,这是我认为整数溢出的地方.这是除非在解密失败时发生错误?
我对此非常困惑,谷歌搜索没有太多帮助,因为大多数都与c ++等非托管语言有关,而不是c#和asp.net.任何帮助将非常感激.
我想做64位算术(不是自然数),所以我需要两个long的乘法来静默地溢出.
(unchecked-multiply Long/MAX_VALUE 3)
Run Code Online (Sandbox Code Playgroud)
诀窍.但
(def n Long/MAX_VALUE)
(unchecked-multiply n 3)
Run Code Online (Sandbox Code Playgroud)
给出溢出异常.我究竟做错了什么?
(Clojure 1.5.1)
我刚刚开始学习 MIPS 指令的异常处理程序。
我需要使我的程序具有算术溢出异常,以便我可以测试我的异常处理程序。
我有两个数组 A 和 B。数组 A 有十六进制数,数组 B 有整数。
如何通过添加十六进制数和整数来使溢出?
哪些十六进制数和整数相加会导致溢出?
我有这段代码:
#include <stdio.h>
int main(int argc, const char** argv)
{
int a = argv[0][0];
int b = argv[0][1];
while ((a >= 0) &&
(a < b))
{
printf("a = %d\n", a);
a++;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我正在编译它gcc-4.5 -02 -Wstrict-overflow=5.
编译器对我大吼大叫
warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C1 +- C2
这究竟是什么意思?
如果我是正确的,这个循环永远不会导致溢出,因为要增加a,它必须小于另一个整数.如果它更大,则循环终止.
任何人都可以向我解释这种行为吗?
使用Checked模块会对性能产生影响吗?我已经用int类型的序列测试了它,看不出明显的区别.有时检查版本更快,有时未选中更快,但通常不会太多.
Seq.initInfinite (fun x-> x) |> Seq.item 1000000000;;
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Real: 00:00:05.272, CPU: 00:00:05.272, GC gen0: 0, gen1: 0, gen2: 0 val it : int = 1000000000
open Checked
Seq.initInfinite (fun x-> x) |> Seq.item 1000000000;;
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Real: 00:00:04.785, CPU: 00:00:04.773, GC gen0: 0, gen1: 0, gen2: 0 val it : int = 1000000000
基本上我正在试图弄清楚是否总会打开Checked会有任何不利因素.(我遇到了一个并不是很明显的溢出,所以我现在扮演的是那个不想要另一个伤心的被抛弃的情人的角色.)我能想出的唯一非人为的理由并不总是使用Checked如果有一些性能受到打击,但我还没有见过.
以下内容也适用于其他MIN_VALUE和,但我们现在MAX_VALUE只关注。Integer我知道在Java中整数是32位的,有Integer.MAX_VALUE = 2147483647(2 31 -1)和Integer.MIN_VALUE = -2147483648(-2 31 )。当使用这些值进行计算时,当超出其范围时,数字会环绕/溢出。因此,当您执行类似操作时Integer.MAX_VALUE + 1,结果与 相同Integer.MIN_VALUE。
MIN_VALUE以下是使用和 进行的一些基本算术计算MAX_VALUE:
Integer.MAX_VALUE: 2147483647
Integer.MAX_VALUE + 1: -2147483648
Integer.MAX_VALUE - 1: 2147483646
Integer.MAX_VALUE * 2: -2
Integer.MAX_VALUE * 3: 2147483645
Integer.MAX_VALUE * 4: -4
Integer.MAX_VALUE * 5: 2147483643
Integer.MAX_VALUE / Integer.MAX_VALUE: 1
Integer.MAX_VALUE * Integer.MAX_VALUE: 1
Integer.MAX_VALUE / Integer.MIN_VALUE: 0
Integer.MAX_VALUE * Integer.MIN_VALUE: -2147483648
Integer.MAX_VALUE - Integer.MIN_VALUE: -1
Integer.MAX_VALUE + Integer.MIN_VALUE: …Run Code Online (Sandbox Code Playgroud) 我使用pd.pivot_table()方法通过旋转用户项目活动数据来创建用户项目矩阵。但是,数据框太大了,我收到了这样的抱怨:
Unstacked DataFrame太大,导致int32溢出
有关解决此问题的任何建议?谢谢!
r_matrix = df.pivot_table(values='rating', index='userId', columns='movieId')
Run Code Online (Sandbox Code Playgroud) Rust 在调试和发布模式下以不同的方式处理有符号整数溢出。当它发生时,Rust 在调试模式下会发生恐慌,而在发布模式下默默地执行二进制补码包装。
据我所知,C/C++ 将有符号整数溢出视为未定义行为,部分原因是:
因此,如果 Rust 编译器确实在有符号整数方面执行与 C/C++ 编译器相同类型的优化,那么为什么The Rustonomicon指出:
无论如何,Safe Rust 不会导致未定义行为。
或者即使 Rust 编译器不执行这样的优化,Rust 程序员仍然不希望看到有符号整数环绕。不能称为“未定义行为”吗?
当然,这又花了 20 万年才发生。但是在 的值超过 的值后,Javascript约会系统会出错吗?会发生什么后果?Date.now()Number.MAX_SAFE_INTEGER
也许这个问题看起来很奇怪而且没用。但是任何人都可以回答我的好奇心以及其他可能有相同问题的人。
有一次我认为我发现了sscanf() 的一个很好的用途,但在阅读了它如何处理整数之后,它似乎不是。有一个应该看起来像这样的字符串:123,456,678我想我可以使用以下代码安全简洁地解析它:
unsigned int x[3];
if( sscanf( s, "%u,%u,%u", x+0, x+1, x+2 ) == 3 )
…
Run Code Online (Sandbox Code Playgroud)
如果转换失败,我对知道原因并不真正感兴趣,也不担心获得不正确的数据。如果那里有数字以外的东西,scanf()肯定应该创建一个匹配错误并中止,并且它知道我正在寻找一个无符号整数,所以任何负数也应该是一个匹配错误?不。
当我读到转换说明符%u时,我开始怀疑:匹配一个可选的有符号十进制整数。为什么这不是匹配错误?如果签了会怎样?
引自 ISO/IEC 9899:201x 7.21.6.2 ¶ 10,fscanf 函数(重点是我的):
除了 % 说明符的情况外,输入项(或者,在 %n 指令的情况下,输入字符的计数)被转换为适合转换说明符的类型。如果输入项不是匹配序列,则指令执行失败:这种情况是匹配失败。除非赋值抑制由 * 指示,否则转换结果将放置在尚未收到转换结果的格式参数之后的第一个参数所指向的对象中。如果此对象没有合适的类型,或者转换的结果无法在对象中表示,则行为是 undefined。
它看起来好像scanf()将每个看起来像整数的转换说明符都视为相同,将输入读取为某种未指定大小的有符号整数,然后绕过所有正常转换写入输出。
例如,根据正常的隐式转换,将任何整数(负数或正数)转换为较小大小的无符号整数表现良好,但不适用于scanf():
unsigned int x;
x = -1; /* Well defined: (-1) + (UINT_MAX+1) = UINT_MAX */
sscanf( "-1", "%u", &x ); …Run Code Online (Sandbox Code Playgroud)