PHP面試之MySQL安全性

MySQL查詢的安全方案

  • 使用預(yù)處理語句防止SQL注入
    如刪除id=1的用戶
delete from user where id=1;

# 在瀏覽器中通過get方式傳遞id值,GET ?id=1,如
user/delete?id=1 # 如果瀏覽器惡意傳值。如下
user/delete?id=1 or 1=1 # 值為1= or 1=1,現(xiàn)在的SQL語句為:

delete from user where id=1 or 1=1 # 這條語句永遠成立,這條語句會將user表的數(shù)據(jù)全部刪除

# 處理語句
delete from user where id=?; # MySQL會預(yù)先對這條語句進行結(jié)構(gòu)解析,在傳值`1 or 1=1`那么就不會再將or當(dāng)成結(jié)構(gòu)來解析了(prepare)
  • 寫入數(shù)據(jù)庫的數(shù)據(jù)要進行特殊字符的轉(zhuǎn)義
  • 查詢錯誤信息不要返回給用戶,將錯誤記錄到日志

PHP端盡量使用PDO對數(shù)據(jù)庫進行操作,PDO對預(yù)處理有很好的支持。MySQLi也有,但擴展性不如PDO,效率高于PDO。

延伸:MySQL的其他安全設(shè)置

  • 定期做數(shù)據(jù)庫的備份
  • 不給查詢用戶root權(quán)限,合理分配權(quán)限
  • 關(guān)閉遠程訪問數(shù)據(jù)的權(quán)限
  • 修改root口令,不用默認口令,使用比較復(fù)雜的口令
  • 刪除多余的用戶
  • 改變root用戶的名稱
  • 限制一般用戶瀏覽其他庫
  • 限制用戶對數(shù)據(jù)文件的訪問權(quán)限
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容