私は自分のWebアプリケーションを緊張させています。私はすでにSQLパラメータを持っていて、アポストロフィを2倍にし、javascriptを取り除き、htmlをエンコードします。上記以外にも気にする必要があることはありますか?ハッカーが使用するSQLインジェクションテクニックを知る必要があるもの
答えて
パラメータ化クエリのみを必要としているあなたは、動的データを使用してクエリを生成している場合:....
EDITを削除します。ユーザー。
も便利ですオラクル、のようなものの上にこれらのクエリを使用するための利点があります。あなたがすることができる他
何かがデータベースに接続するユーザーが必要な最小限の権限を持っていることを確認することです。
あなただけのアクセスを行うためにストアドプロシージャを使用することができますが、動的なクエリを作成する必要がある場合にはより困難である、あなたの妄想によって http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet:
あなたはSQLインジェクションに対する保護に関するいくつかの提案をここに見ることができます。
ビューでトリガーを使用しない限り、ビューを使用することはできません。ビューを使用すると、そのクエリーを使用してデータベース内のデータを変更できます。 http://www.wwwcoder.com/Directory/tabid/68/type/art/site/2966/parentid/258/Default.aspx
しかし、合理的であるよりも多くのセキュリティを置くことにはポイントがありませんので、あなたは、あなたが保護し、どこまで行くになっているものを比較検討する必要があります使用することができます
別ページはこちらです。
たとえば、いくつかの列を暗号化する価値はありますか?そのため、鍵を保護する方法についてはより多くの問題が発生しますが、マシンにハッキングする人がいて、データベースファイルを入手することが心配されている場合は、考慮する必要があります。
パラメータ化されたクエリを使用する場合は、投稿に記述した内容を行う必要はありません。 This articleは、この件に関するかなり良い議論のようです。
SQLインジェクション攻撃から保護するための銀色の箇条書きは、のみ、パラメータ化されたクエリを使用してユーザー入力をSQLに渡します。
すべての入力が引用符で囲まれていることを確認してください。 ...受け入れられた= 1か年齢30のようなものがあれば、そこにセキュリティホールがある可能性があります:...受け入れられた= 1;はい、攻撃者が1" を使用することができ、DELETE、それはエスケープ入力では動作しません
攻撃者は単に引用符を入れることもできます: ';; DROP TABLE ...' –
私のコメントを入力するために時間をとっているのです:) –
Rex M、彼はすでに彼がエスケープしていると言っていました"そのため、そのアプローチはうまくいかないでしょう。入力がエスケープされていればそれはうまくいかないでしょうか? –
自動化されたMicrosoft Source Code Analyzer for SQL Injectionをダウンロードして、まずコードを解析させることをお勧めします。安価な低吊りフルーツを手にすることができます。
cyberpunkは、連結を介してuriクエリからperlシェルを取得できます。 3つのソリューションはストアドプロシージャ、preparedstatementsまたはgqlを代わりに使用しています。
「サイバーパンク」 - これは私がしばらく聞いたことのない言葉です。 –
技術的には、JavaScriptとHTMLはSQLインジェクション攻撃とは関係ありませんが、インジェクション攻撃です。
私はストップすることに同意しません。少なくとも、これを行ったことをユーザーに知らせることはありません。実際の入力は実際には有効かもしれませんが、特定の文字を削除すると入力のセマンティクスが実際に変更される可能性があります。 URL、LDAP、XML、File Pathインジェクション攻撃はどうでしょうか?
SQLインジェクションは、入力されたデータからダメージを与える可能性のある文字を取り除くことで最も効果的だと主張する多くのセキュリティ "priests"(私が言うこと)があります。 O'Brianをexmapleの有効な入力として受け入れない限り、それは問題ありません。彼らが正しい暗号化について説教していれば、そのすべての努力が注射の攻撃の全体を扱うために使われたかもしれないからです。 " "" ".Replace( ' -
USERINPUT = userInput.Replace(" "")":
は、実際に私はかつてのようなものを書いたMSのセキュリティ専門家によって書かれたコードに対処しなければなりませんでした);
仲間と公平で、彼は非常に巧妙な弟子であり、彼は今日このことを書いていないと確信していますが、 "MyName-'SELECT * FROM User"が実際にこの保護を回避する方法を知ることができますか?
有効な値をブロックしない限り、受け入れることのできる文字の範囲は限られません。 <も有効な数学演算子であるか、またはユーザーがHTMLコードの例を入力する必要があるかもしれません。値のコンテキストは、有効なものと有効でないものを決定します。
次に、許可されていない文字を含む値が表示された場合は、無効な値についてユーザーに知らせるエラーを表示し、再送信する前に修正を依頼します。これはあとで多くの悲しみを救うことができます。これは、データの検証とプログラムの機能をセキュリティに関して保証することと同じくらいです。そして、はい、トラフィックを抑えるためにクライアント側でチェックし、攻撃を防ぐためにサーバー側でチェックする必要があります。
そして、レンダリングするたびに値が適切にエンコードされます。パラメータ化されたクエリはSQLインジェクションを解決する上では問題ありませんが、HTML、URL、JavaScriptのレンダリングでは機能しません。値の正しいSQLエンコーディング(例えば、二重一重引用符を例に挙げた)は安全であり、場合によっては適切です(すべてがストアドプロシージャであり、正しくエンコードされた動的SQLが可能であると主張しない合理的なDBAがいると仮定します)。
もう1つの点として、System.WebのHTMLおよびURLエンコード関数にはいくつかの欠陥があります。これらの問題に対処し、より具体的なエンコードオプションを提供するAnti-Cross Site Scriptingライブラリを制作したMicrosoftチームがいます。私はそれがAnti-XSSと呼ばれると思います。確かに見る価値がある。私はそれが.Net 4に組み込まれているのだろうか?
パラメータ化されたクエリは、悪意のあるものを排除するために長い道のりを歩いていますが、新しい脆弱性を引き起こす、奇妙な、注入可能な動的SQLコンソーシアムがないことを確認します。
その他、狂人フリンジアイデア:人気のオープンソースパッケージを実行しない、P.
- 1. SQL - 結合を使用する必要がありますか?
- 2. Apache Camelの使い方を知る必要があります
- 3. 私は入札通知に使用する必要があるSchema.orgのタイプ
- 4. Amazon S3通知サービス、SNSトピックに提供する必要があるものARN
- 5. IOCコンテナを使用して建設する必要があるものは?
- 6. アンドロイドデベロッパーが知る必要があることは何ですか?
- 7. プッシュ通知にサービスを使用する必要がありますか?
- 8. 非モーダルウィンドウが閉じたときを知る必要がある
- 9. Solrを使用すると、SQLデータベースも必要ですか?
- 10. 定義済みのものを使用する必要がありますか?
- 11. LINQ To SQLの使用を開始する必要がありますか?
- 12. SQL Server 2000でCross Applyを使用する代用が必要
- 13. chisel3:Vecを使用したいが、IndexedSeqを使用する必要がある
- 14. Dataframe Sparkでパーティション化の詳細を知る必要がある
- 15. Java - サブクラスでも使用する必要がある抽象クラスの定数を使用する
- 16. リードソロモンデコードを使用すると、どのシャードが正しいかを知る必要がありますか?
- 17. どこでもNSIntegerを使用する必要がありますか?
- 18. BLLを使用してもDALにアクセスする必要がありますか?
- 19. T-SQLでフラットファイルまたはサブファイルを使用する必要があります
- 20. REST APIまたはSQLデータベースを使用する必要がありますか?
- 21. SQLプロシージャでカーソルを使用する必要がありますか?
- 22. golangパッケージもcliのスタンドアロンで使用する必要があります
- 23. なぜクラスがlaravelエイリアスにある場合でもクラスを使用する必要がありますか?
- 24. Application.LoadLevelがSceneManager.LoadSceneを使用する必要がありません。
- 25. プロファイラを使用する方法を知る必要がある/どちらを使うか
- 26. セマフォでロックを使用する必要がある理由
- 27. エラー424:ループでVlookupを使用する必要があるオブジェクト
- 28. 子孫セレクタを使用する必要がある場合
- 29. ウェブサービスを使用する必要がある場合
- 30. スカラリカバリを使用する必要がある場合:
で始まる言語で書かれた特に私は明示的に「私はこのポストを精製する過程で午前」 –
@Rex Mを愛し:* blush * –
+1使用されたパラメータ化されたクエリ以外は何もする必要はありません。すべてのセキュリティ作業はあなたのために行われます。引用符を取り除くために余分な作業をしようとすると、パラメータの後に完全に無駄になります。 –