#####SQLコードインジェクション防止の8のベストプラクティス
https://snyk.io/blog/sql-injection-cheat-sheet/
######第7章です。
- クライアントサイドの入力バリデーションに依存しない
- 制限された権限を持つデータベースユーザーを使用する
- プリペアドステートメントとクエリパラメータ化を使用する
- コードをスキャンしてSQLインジェクションの脆弱性を探す
- ORMレイヤーを使用する
- ブロックリストに依存しない
- 入力バリデーションを行う
- ストアドプロシージャに注意する
7.入力バリデーションを実行する
入力バリデーションを必ず行ってください。クエリのパラメータ化によるプリペアドステートメントは、SQLインジェクションに対する最善の防御策ですが、常に複数の防御層を設けるようにしましょう。データベースユーザーの権限を制限するのと同様に、入力バリデーションは、アプリケーションのリスクを全般的に下げるための優れた方法です。
また、プリペアドステートメントが利用できない状況もあります。言語によってはこの仕組みをサポートしていなかったり、古いデータベースシステムではユーザーの入力をパラメータとして与えることができなかったりします。このような場合、入力バリデーションが代替手段となるでしょう。
前述のように、入力バリデーションはブロックリストではなく許可リストに依存するようにしてください。許可されるすべてのパターンを正規表現などで記述したルールを作成するか、メンテナンスの行き届いたライブラリを使用してください。これをプリペアドステートメントやクエリのパラメータ化と組み合わせることで、強固な防御が可能になります。
7つめは以上です。
最後までお読みいただきありがとうございました!
######次回は最終章 SQLインジェクションを防ぐ 〜8に続きます。
SQLインジェクションに関する英語全原文はこちらです。
######Contents provided by:
Jesse Casman, Fumiko Doi, Content Strategists for Snyk, Japan, and Randell Degges, Community Manager for Snyk Global