LoginSignup
0
0

More than 1 year has passed since last update.

SQLインジェクションを防ぐ 〜7

Last updated at Posted at 2021-11-21
SQLコードインジェクション防止の8のベストプラクティス

第7章です。

序章
1. クライアントサイドの入力バリデーションに依存しない
2. 制限された権限を持つデータベースユーザーを使用する
3. プリペアドステートメントとクエリパラメータ化を使用する
4. コードをスキャンしてSQLインジェクションの脆弱性を探す
5. ORMレイヤーを使用する
6. ブロックリストに依存しない
7. 入力バリデーションを行う
8. ストアドプロシージャに注意する

チートシート(英語)はこちら

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

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