0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQL呼び出しに伴う脆弱性

Last updated at Posted at 2021-10-13

対策

プレースホルダによるSQL文組み立てする

SELECT * FROM user where id = ?

値は、バインド(bind)する

PDOの安全な利用法

PDO(PHP Data Objects)のオプション指定

  • 例外処理を使用する
    • PDO::ATTR_ERRMODE = PDO::ERRMODE_EXCEPTION
  • 複文の実行禁止
    • PDO::MYSQL_ATTR_MULTI_STATEMENTS = false
    • 複数のSQLを;で区切って実行することを禁止する
  • 静的プレースホルダの指定
    • PDO::ATTR_EMULATE_PREPARES = false
    • 動的プレースホルダ:アプリケーション側のライブラリでパラメータをバインドしてからデータベースエンジンに送る(処理系にバグがなければSQLインジェクションは発生しない)

保険的対策

  • 詳細なエラーメッセージの抑止
    phpの場合、displau_errors = Off
  • 入力値の妥当性検証
  • データベースの権限設定
    • 表示のみの場合は、書き込み権限をつけない
    • ファイル読み込み権限
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?