搜尋

首頁  >  問答  >  主體

關於mysql預處理語句防注入底層處理問題

PHP的PDO物件或STMT物件執行包含注入的SQL語句
查看MYSQL日誌發現只是把第二個單引號轉義了
SELECT * FROM admin WHERE  user = '123\' 或 1 = 1#'
而用C和其他語言呼叫libmysql.dll的原生API 日誌是這樣
select * from admin where user = X'313233'
處理方式是把參數轉換為十六進制

都是預處理底層處理為何會出現兩種不同的方式?

PHP封裝的預處理函數是否基於MYSQL的原生API?

百度另一種說法PHP的預處理是偽參數查詢(模擬預處理)但是百度這方面沒什麼介紹資料
這種說法是否屬實?

希望大神可以解惑 小弟再次謝過!

phpcn_u5077phpcn_u50772752 天前1783

全部回覆(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
  • 取消回覆