SQLインジェクションに対して、パラメータ化されたクエリの使用とデータの検証とは別の対策があるかどうかを知りたかったのです。 ありがとう!SQLインジェクション防止:最大対策
答えて
すべてのテーブルをスキャンしてテーブル名とカラムのホワイトリストを作成するスクリプトを作成し、それを使用してテーブル/カラム名になるすべてのユーザ入力を検証しますパラメトリッククエリーに入りません。それ以外のものはPDO Bind!
明らかに、クライアント側で実行していることに加えて、サーバー側のデータも検証していることを確認してください。
また、ウェブで話している場合は、すべてのデータ、つまり、クエリ文字列とCookieの値フィールドとフォームフィールドを検証していることを確認してください。
私はこれがGoogleで最初のヒットである知っているが、私は(再びウェブに関連)随時この記事を読み返すと、実際にそれを評価します: http://www.securiteam.com/securityreviews/5DP0N1P76E.html
しかし、検証の問題ではありませんか?私は、検証と準備された陳述以上のものがあるかどうかを知りたかったのです。コメントありがとうと私はリンクを読む(最初の一見から良いようです) –
私はいつもを通じて私のユーザーの入力テキストを実行しますカスタムサニタサーバー側では、すべての厄介なものを取り除くことができます。 (& "= 'etc)
私は、私が呼び出すストアドプロシージャを除いて私のコードには何もSQLステートメントを持っていないので、たとえ脆弱性が見つかったとしても、ストアドプロシージャを調べる必要があります
ストリング "123456"と "12345"とUNION SELECT *を期待している場合は、ストアドプロシージャのパラメータで、VARCHAR(10)などのテキストサイズを制限することができます。INNER JOIN MEMBER_ADDRESS "ON ID"が来ると、ストアドプロシージャはそれを好きにしません。
最後の1つのポイントは、戻って来るすべての例外をキャッチし、それらを正常に処理しようとします。 ebsitesは "データベースに接続できませんでした、USER_ID 'はmydatabase.memberに存在しません"というような内容を表示します。あなたのデータベースのアーキテクチャーで誰かに嗅覚を与えると、悪用のためにボールが回転し始めます。
ありがとう。質問してもいいですか?私はGoogleができることを知っているが、ただ誰かに説明するのが良い。単一のSQL文なしではどうしますか?どのようにストアドプロシージャを作成しますか? ありがとう! –
確かに、それはあなたが持っているSQLデータベースに依存します。ほとんどの人がLinuxサーバーにいるのと同じように、デフォルトでMySQL(5.X.X)を持っています。これが私の個人的な好みです。ストアドプロシージャは、基本的には、データベースに格納されているプロシージャ(メソッドのようなもの)です。 あなたはこのようなものを使用してSPを作成することができます(DBにSQLの直接実行): は がMy_ID = _idテストから SELECT *をBEGIN(_idのINT(10)に) 'my_db'.'get_my_user'をCREATE PROCEDUREを。 END 次に、このSQL文を実行して、そのプロシージャをコールします。sql = "call get_my_user($ value)"; – tutts
は、 'call get_my_user($ value)'は通常のSQLクエリであるため、同じ脆弱性があります。 –
- 1. フォームデータ:防止SQLインジェクション
- 2. PHP SQLインジェクション防止構文
- 3. SQLインジェクション防止用パッケージ
- 4. PHP SQLインジェクション防止技術
- 5. rubyスクリプトによるSQLインジェクションの防止
- 6. ストアドプロシージャによるSQLインジェクションの防止
- 7. SQLインジェクションの挿入を防止する
- 8. Codeigniter RestFul library SQLインジェクションを防止する
- 9. SQLインジェクションを防ぐ
- 10. 停止SQLインジェクション
- 11. 実行されていないSQLでのSQLインジェクションの防止
- 12. 詳細ページからのSQLインジェクションの防止
- 13. Entity Frameworkのと生の文字列クエリSQLインジェクションの防止
- 14. addslashes(string)だけでSQLインジェクションを防止できますか?
- 15. SQLParameterはSQLインジェクションをどのように防止しますか?
- 16. MS Access - 接続文字列のSQLインジェクションを防止する
- 17. CodeIgniterの最良のDBのクエリメソッド&インジェクション防止
- 18. LINQ-To-SQLはSQLインジェクションをどのように防止しますか?
- 19. quote()に対するSQLインジェクション?
- 20. SQLインジェクションからサイトを防ぐ方法
- 21. CodeIgnighterのデータベースライブラリーはSqlインジェクションを防止するのに十分です
- 22. SQLインジェクションを防止するために必要なステップは何ですか?
- 23. mysqli_real_escape_stringがSQLインジェクションを防止できないのはなぜですか?
- 24. ASP.NET MVC 3 1つのローカルサーバーでホストされたマルチポートアプリケーションの偽造防止対策
- 25. SQLインジェクションに対するストライプスラッシュの効果?
- 26. 名前付きパラメータの主なパフォーマンスの低下とネイティブSQLでのhibernateを使用したSQLインジェクションの防止
- 27. .NETの動的SQLでテーブル名または列名をサニタイズしますか? (防止SQLインジェクション攻撃は)
- 28. SQL Server 2005とウイルス対策ソフトウェア
- 29. 対話型sshプロンプトを防止する
- 30. 対策
データベースを使用しないでください。 – Jacob
私の重要な追加と共に受け入れられた答え[PHPでSQLインジェクションを止める最善の方法](http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php)それをすべて。 –