#####SQLコードインジェクション防止の8のベストプラクティス
https://snyk.io/blog/sql-injection-cheat-sheet/
######第6章です。
- クライアントサイドの入力バリデーションに依存しない
- 制限された権限を持つデータベースユーザーを使用する
- プリペアドステートメントとクエリパラメータ化を使用する
- コードをスキャンしてSQLインジェクションの脆弱性を探す
- ORMレイヤーを使用する
- ブロックリストに依存しない
- 入力バリデーションを行う
- ストアドプロシージャに注意する
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