怎样做才能让这条SQL变成一条危险的SQL?

现在有一条SQL是这样的:
SELECT * FROM member WHERE username = params LIMIT 1
params是一个用户输入的变量,假设我已知所有库表字段,且只能执行一条SQL语句的情况下(项目的ORM执行的),params的值怎么填,会变成对数据库/数据表/表数据 有害的一条SQL


回答:

SELECT * FROM member WHERE username = "params" LIMIT 1
params = '" or (delete * from member) or username="';
拼合就变成了
SELECT * FROM member WHERE username = "" or (delete * from member) or username="" LIMIT 1

但是这是理论情况,实际上大部分框架都内置了一些处理,不是那么容易注入的,比如变量中的双引号自动做转义,这样就变成SELECT * FROM member WHERE username = "\" or (delete * from member) or username=\"" LIMIT 1,然后无害了。

简单来说,不要自己去拼SQL,而是利用对象提供的方法去处理就好了。php不是一般都$query->from('member')->where('username', params)->fetch()这样吗。


回答:

SQL注入啊,用 预编译 解决

以上是 怎样做才能让这条SQL变成一条危险的SQL? 的全部内容, 来源链接: utcz.com/p/944598.html

回到顶部