LoginSignup
0
0

More than 1 year has passed since last update.

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

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

第6章です。

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

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

6.ブロックリストに依存しない

これはすでに多くの人に馴染みがあると思いますが、再度、次のことを強調します。パラメータにブロックリストを実装しないでください。ブロックリストアプローチは、脆弱な入力を定義するルールのコレクションを設定します。入力がこれらのルールに合致する場合、リクエストはブロックされます。しかし、そのルールが弱すぎると、悪意のあるエントリが有効になりえます。強すぎると、有効なエントリーをブロックしてしまいます。

たとえば、ORという単語を含むすべてのリクエストをブロックします。これは妥当なルールかもしれませんが、実際には「Or」はイスラエル人のファーストネームとして非常に一般的に使われています。つまり、私の同僚の名前を入力すると、大勢の人がブロックされてしまうのです。同じことが「シングルクォート」'にも当てはまります。無数の名前がその文字を含んでいます。O'NeillやO'Donnellなどもあります。またDont'aといったファーストネームもあるのです。

6つめは以上です。
最後までお読みいただきありがとうございました!

次回はSQLインジェクションを防ぐ 〜7に続きます。

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