PHP面接のMySQLセキュリティ

858 ワード

MySQLクエリのセキュリティスキーム
  • 前処理文を使用して、id=1を削除するユーザ
  • のようなSQL注入を防止する.
    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,   SQL   :
    
    delete from user where id=1 or 1=1 #         ,      user        
    
    #     
    delete from user where id=?; # MySQL              ,   `1 or 1=1`       or        (prepare)
    
  • データベースに書き込まれたデータは、特殊文字のエスケープ
  • を行う.
  • クエリエラー情報はユーザに返さず、ログ
  • にエラーを記録する.
    PHP側はできるだけPDOを使ってデータベースを操作し、PDOは前処理をよくサポートしている.MySQLiもありますが、拡張性はPDOに及ばず、効率はPDOより高いです.
    延長:MySQLのその他のセキュリティ設定
  • 定期的にデータベースのバックアップを行う
  • クエリーユーザーroot権限を与えず、合理的に権限を割り当てる
  • リモートアクセスデータを閉じる権限
  • rootパスワードを変更し、デフォルトパスワードを使用せず、比較的複雑なパスワード
  • を使用します.
  • 余分なユーザ
  • を削除する.
  • rootユーザの名前を変更する
  • 一般ユーザが他のライブラリ
  • を閲覧することを制限する.
  • ユーザのデータファイルへのアクセスを制限
  • .