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

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

阅读 2k
2 个回答

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()这样吗。

头像
自然
    274
    新疆乌鲁木齐市

    SQL注入啊,用 预编译 解决

    撰写回答
    你尚未登录,登录后可以
    • 和开发者交流问题的细节
    • 关注并接收问题和回答的更新提醒
    • 参与内容的编辑和改进,让解决方法与时俱进
    推荐问题