SQLインジェクション
起こりうる脅威
■ 発生しうる脅威
SQL インジェクション攻撃により、発生しうる脅威は次のとおりです。
- データベースに蓄積された非公開情報の閲覧
個人情報の漏えい 等
- データベースに蓄積された情報の改ざん、消去
ウェブページの改ざん、パスワード変更、システム停止 等
- 認証回避による不正ログイン4
ログインした利用者に許可されている全ての操作を不正に行われる
- ストアドプロシージャ等を利用した OS コマンドの実行
システムの乗っ取り、他への攻撃の踏み台としての悪用 等
PHPでの対策
プレースホルダ使おうね
フォーム入力がある値を直接SQL文に使用せず下記のようにバインド。
バインドは2パターンあるのですが、両方を一緒に使用することが出来ないので注意して下さい。
個人的には名前付きプレスホルダーで実装したほうがわかりやすいです。。。。
//疑問符パラメータ
$Stmt = $pdo->prepare('SELECT * FROM test WHERE id = ? and input_date = ?');
$Stmt->bindValue(1, '100');
$Stmt->bindValue(2, '2022-08-01');
$Stmt->execute();
//名前付きプレスホルダー
$Stmt = $pdo->prepare('SELECT * FROM test WHERE id = :id and input_date = :input_daet');
$Stmt->bindValue(':id', '100');
$Stmt->bindValue(':input_daet', '2022-08-01');
$Stmt->execute();
コマンドインジェクション
タグ内に悪意のあるコマンドを実行する内容を記述し、セキュリティ事故を起こす方法。
df
起こりうる脅威
- サーバ内ファイルの閲覧、改ざん、削除
重要情報の漏えい、設定ファイルの改ざん 等
- 不正なシステム操作
意図しない OS のシャットダウン、ユーザアカウントの追加、変更 等
- 不正なプログラムのダウンロード、実行
ウイルス、ワーム、ボット等への感染、バックドアの設置 等
- 他のシステムへの攻撃の踏み台
PHPでの対策