在带有SQL注入的mysql中的子句中

阿图尔·沙玛(Atul Sharma)

我在PHP中编写了一个mysql更新查询,以防止sql注入为:

UPDATE table1 status = 1 WHERE id IN ( ? ) and active = ?, array(implode(',' $ids), 1)

其中id字段具有整数数据类型。

我在执行此问题时遇到问题,因为爆破会生成一个逗号分隔的字符串,并且ID未被分配为IN子句,因为它变成了:

array(implode(',' $ids) == array(1,2,3, 1)

前三个是id,数组中的第四个值是活动字段值,但是语句考虑将数组中的前两个值(即1,2)替换为“?” 在查询中

注意:在查询中没有问题,就像在不使用阻止sql注入的情况下进行相同查询一样

UPDATE table1 SET status = 1 WHERE id IN ( 1,2,3 ) and active = 1

工作正常。仅PHP内爆功能存在问题。

猕猴桃榨汁机

当将数组中的所有值都强制转换为int时,可以防止sql注入。这样就很安全了。

$intCastedIds = array_map('intval', $ids);

如果您在$ ids数组中注入了代码,则intval会将所有值都转换为int。因此,在这种情况下是不可能注入的。

因此,而不是:

UPDATE table1 status = 1 WHERE id IN ( ? ) and active = ?, array(implode(',' $ids), 1)

做类似的事情:

'UPDATE table1 status = 1 WHERE id IN (' . implode(',', $intCastedIds) . ') and active = ?', 1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在带有SQL插值的子句中

来自分类Dev

SQL Server上带有IN的WHERE子句中的CASE语法

来自分类Dev

MySQL:强制查询在WHERE子句中使用带有局部变量的索引

来自分类Dev

如何在带有Rails的SQL查询的where子句中的值数组上生成LIKE?

来自分类Dev

ORACLE SQL-在WHERE子句中使用带有GROUP BY无效标识符的SUM

来自分类Dev

SELECT子句中的SQL函数计数(带有百分比的说明)

来自分类Dev

WHERE 子句中带有相等语句的数字在 SQL (WHERE 2>1) 中意味着什么?

来自分类Dev

使用SqlBuilder在FROM子句中进行SQL注入

来自分类Dev

如何在where子句中演示SQL注入?

来自分类Dev

如何在Ruby中的when子句中编写带有多个语句的case语句?

来自分类Dev

带有AND逻辑的SQL IN子句

来自分类Dev

mysql中where子句中的CASE语句

来自分类Dev

SQL Server中带有条件的子句

来自分类Dev

功能中带有where子句的sql语句

来自分类Dev

带有IN语句的SQL中的动态Where子句

来自分类Dev

在SQL Server中带有在子句之间的案例声明

来自分类Dev

SQL查询中带有总和的Where子句

来自分类Dev

R中带有IN子句的参数化SQL查询

来自分类Dev

SQL 中 where 子句中的情况

来自分类Dev

如何在SQL中的SUM子句中使用not in子句

来自分类Dev

在WHERE子句中带有参数的SSRS表达式

来自分类Dev

在where子句中带有upper的KDB查询

来自分类Dev

在带有IN条件的where子句中使用CASE

来自分类Dev

SELECT语句中带有WHERE子句的嵌套COUNT

来自分类Dev

在带有clob参数的where子句中使用函数

来自分类Dev

在带有IN的CASE子句中进行SELECT

来自分类Dev

在 WHERE 子句中带有日期的 GemFireXD 导出查询

来自分类Dev

在SQL中返回包含IN子句中所有值的记录

来自分类Dev

IN()子句中的SQL查询

Related 相关文章

热门标签

归档