6

XSSSQLインジェクションサービス拒否などの一般的なWeb攻撃に対する防御方法は何ですか?

編集:ウィキペディアからの説明の下であなたの回答を集めました。そして、完全なリファレンスを得るためにいくつかの質問を追加します。

SQLインジェクション

SQLインジェクションは、アプリケーションのデータベース層で発生するセキュリティの脆弱性を悪用するコードインジェクション手法です。この脆弱性は、SQLステートメントに埋め込まれた文字列リテラルのエスケープ文字に対してユーザー入力が誤ってフィルター処理されているか、ユーザー入力が強く入力されていないために予期せず実行された場合に発生します。これは、あるプログラミング言語またはスクリプト言語が別の言語に埋め込まれている場合に発生する可能性がある、より一般的なクラスの脆弱性のインスタンスです。

  • ユーザー入力を信頼せず、できるだけ早く検証してください。
  • 生のユーザー入力からSQLを構築しないでください。代わりにパラメーターを使用してください。

クロスサイトスクリプティング(XSS)

クロスサイトスクリプティングは、悪意のあるWebユーザーによる他のユーザーが表示するWebページへのコードインジェクションを可能にするWebアプリケーションに通常見られる一種のコンピューターセキュリティの脆弱性です。このようなコードの例には、HTMLコードやクライアント側のスクリプトが含まれます。攻撃者は、悪用されたクロスサイトスクリプティングの脆弱性を利用して、同一生成元ポリシーなどのアクセス制御を回避できます。

  • ユーザーが送信したコンテンツを逐語的に出力または実行しないでください。
  • すべての出力をHTMLエンコードします。

サービス拒否攻撃

サービス拒否攻撃(DoS攻撃)または分散型サービス拒否攻撃(DDoS攻撃)は、対象のユーザーがコンピューターリソースを利用できないようにする試みです。DoS攻撃を実行する手段、動機、および標的はさまざまですが、一般に、インターネットサイトまたはサービスが一時的または無期限に効率的またはまったく機能するのを防ぐための1人または複数の人の協調的で悪意のある取り組みで構成されます。 。

プログラムでサービス拒否攻撃を回避することは不可能に思えますが、どう思いますか?

ブルートフォース攻撃

暗号解読では、ブルートフォース攻撃は、多数の可能性を体系的に試すことによって暗号解読スキームを打ち負かす方法です。たとえば、メッセージを復号化するためのキースペース内の多数の可能なキー。ほとんどのスキームでは、ブルートフォース攻撃の理論的な可能性が認識されていますが、計算上実行不可能になるように設定されています。

  • あまりにも多くのログイン試行が失敗したときはいつでもアカウントをロックしてください。無制限の再試行を許可しないでください。
  • 入力したパスワードが間違っている場合は、遅延を追加します。

いくつかの追加の質問:

  • コンテンツに応じて入力を投稿しようとするWebロボットについてどう思いますか?たとえば、SOは画像検証を使用しています。

  • javascript eval関数についてどう思いますか?

  • 外部に公開されていないサーバー上のコンテンツにアクセスする方法はありますか?たとえば、いくつかの重要なレコードをデータベースに挿入するページがありますが、それがURLであることを知っているのは私だけです。この種のファイルを取得する方法はありますか?私はあなたがそれにいくつかのセキュリティルールを設定できることを知っています。

注:ディレクトリリストは無効になっており、このファイルをホストしています。)

返信ありがとうございます!

4

7 に答える 7

3

XSS および SQL インジェクションの場合: ユーザーが送信したコンテンツをそのまま出力または実行しないでください。

于 2009-02-04T15:49:23.610 に答える
2
  • できるだけ早くすべてを検証します。
  • 生のユーザー入力から SQL を作成しないでください。代わりにパラメーターを使用してください。
  • すべての出力を HTML エンコードします。
于 2009-02-04T17:10:51.903 に答える
1

検証!

于 2009-02-04T15:46:57.547 に答える
1

最も重要なのは、パスワードの総当たり攻撃を防ぐことです。入力したパスワードが間違っている場合に遅延を追加することで、これは簡単です。

于 2009-02-04T15:47:40.773 に答える
1

fortify というツールを使用してソフトウェアをスキャンしますhttp://www.fortify.com/ (申し訳ありませんが商用製品ですが、他にもあるかもしれません)

検証されていないユーザー入力、パラメーターの代わりに文字列連結などをキャッチします。

この製品を試すだけで、セキュアなプログラミング方法を学ぶことができます。

于 2009-02-04T16:01:03.900 に答える
0

コンテンツに応じて入力を投稿しようとする Web ロボットについてどう思いますか? たとえば、SO は画像検証を使用しています。

画像の検証は CAPTCHA と呼ばれます。自動化されたボットがフォームに入力するのを防ぎ、人間が実際にフォームを送信していることを確認するのに役立ちます。これらは通常、フォームへのアクセスを制御する必要がある場所で使用されます。スパム ボットは、スパム フィルターをバイパスするために連絡先フォームに入力しようとするため、そのようなものに何らかの保護を追加する必要がある場合があります。ほとんどの場合、フォームの乱用は最小限ですが、場合によっては見られます。

javascript eval 関数 についてどう思われますか?

使い方次第です。他のものと同様に、ユーザー入力を信頼しないでください。eval() を介して入力を実行する場合は、最初に適切なサニテーション プロセスを実行していることを確認してください。入力をデータベースに保存し、それを引き出して他のユーザーが見ることができるように表示する場合、これは二重に重要です。これは、SQL、HTML、および JavaScript に当てはまります。誰かがあなたのサイトがどのように機能するかについて十分な知識を持って JS コードを実行できる場合、彼らはあらゆる種類のクレイジーなことを行い、ログインしているユーザーを模倣したり、パスワードを変更したりできます.

外部に公開されていないサーバー上のコンテンツにアクセスする方法はありますか?

他の誰かが述べたように、これはあいまいさによるセキュリティであり、推奨されません。機密性の高いものはすべて、安全なログイン エリアの背後に配置する必要があります。「隠し URL」だけに頼らないでください。誰かがあなたの特別な URL を推測したり、Google がアクセスできるログ ファイルに記録されたりした場合、誰かが侵入できたかどうかわからない可能性があります。

于 2009-02-06T16:14:58.253 に答える