0
我正在写一个控制器操作,它从一个窗体接受两个输入:一个现有的用户ID和一个新的用户标识。过滤输入 - 是足够的
两者都应该是整数值。
为了避免任何潜在的安全问题,仅仅检查is_int就足够了吗?
即:
if (is_int($existingUserId)) {
}
这应该避免,我认为任何问题 - 但我不是100%肯定
我正在写一个控制器操作,它从一个窗体接受两个输入:一个现有的用户ID和一个新的用户标识。过滤输入 - 是足够的
两者都应该是整数值。
为了避免任何潜在的安全问题,仅仅检查is_int就足够了吗?
即:
if (is_int($existingUserId)) {
}
这应该避免,我认为任何问题 - 但我不是100%肯定
您应该使用is_numeric
而不是is_int
。
根据is_int
documentation:is_int('23') = bool(false)
。此外,文档说明:
要测试变量是数字还是数字字符串(例如表单输入,始终是字符串),您必须使用is_numeric()。
在大多数情况下,转换为int也不会对任何人造成伤害。 –
@JordanDoyle转换为int将简单地将非数字值转换为“0”,这可能会产生意想不到的副作用。我建议演员,但只有在执行数字检查后。 – Vulcan
那么这将有助于发现空值和顽皮的字符串,并且在大多数情况下,MySQL中自动增量的id是1索引的,所以id不应为零。 –