搜索

首页  >  问答  >  正文

关于mysql预处理语句防注入底层处理问题

PHP的PDO对象或STMT对象 执行包含注入的SQL语句
查看MYSQL日志发现只是把第二个单引号转义了
SELECT * FROM admin WHERE  user = '123' or 1 = 1#'
而用C和其他语言调用libmysql.dll的原生API 日志是这样
select * from admin where user = X'313233'
处理方式是把参数转换为十六进制

都是预处理 底层处理为何会出现两种不同的方式?

PHP封装的预处理函数是否基于MYSQL的原生API?

百度另一种说法PHP的预处理是伪参数查询(仿真预处理)但是百度这方面没什么介绍资料
这种说法是否属实?

希望大神可以解惑 小弟再次谢过!

phpcn_u5077phpcn_u50772752 天前1782

全部回复(2)我来回复

  • 清晨的那一抹阳光照耀在我的脸上

    清晨的那一抹阳光照耀在我的脸上2017-06-15 22:31:56

    php大神,都在研究底层了

    回复
    0
  • phpcn_u5077

    不是大神 碰到奇怪而感兴趣的事情喜欢刨根问底

    phpcn_u5077 · 2017-06-16 07:31:17
  • shuffle

    shuffle2017-06-15 22:03:18

    虽然听不懂你在说什么,但是感觉好高端的样子

    回复
    0
  • phpcn_u5077

    。。。。。。

    phpcn_u5077 · 2017-06-16 07:33:44
  • 取消回复