2017-12-31 80 views
1

私はハッシュ計算機のコースワークに取り組んでいます。これは、メインページに、ユーザーがハッシュを提出し、テキストを取得して詩をバイスすることを許可したフォームを2つ提出する単純なWebアプリケーションです。はCSRFで、単純なHash Calculator PHPアプリケーションの脅威ですか?

アプリケーションは簡単ですが、内部にセキュリティ機能を実装する必要があります。私はSQLとXSSの攻撃を軽減することができました。次に、2つの脆弱性評価スキャナ「Acunetix」と「Nessus」を使用することにしました。どちらのスキャナでも、自分のアプリケーションがCSRFに対して脆弱であることがわかりました。この攻撃に対する保護は、セッションとランダムトークンをPHPで実装することです。

私はこの攻撃とそれが何をしているのか読んでいます。しかし、私は非常にこの攻撃は主にすでに認証されたユーザーとクッキーに焦点を当てているので、私の質問は非常に混乱している?ハッシュとプレーンテキストを返すだけで復旧するセッションやトークンをアプリケーションに埋め込む必要はありますか?はいの場合、どうすればいいのでしょうか?

ありがとうございました!

+0

CSRFの保護は、フォームからの要求が確実に行われるようにするためです(誰もあなたのバックエンドに投稿することはできません)。 CSRFがなければ、誰でもフロントエンドでバックエンドを使用できます。実際には、あなたがそれを気にするなら、CSRFを追加してください。誰かが自分のサイト/スクリプトからバックエンドに投稿するかどうか気にしない場合、CSRFは必要ありません。 –

+0

@MagnusEriksson Anti-CSRFはMitM /プロキシを保護しません。 – user2864740

+0

@ user2864740もちろんです。あなたをすべてから守るただ一つの保護だけではありません。しかし、このようなアプリケーションでは、私は中間攻撃の男性は本当に大きな脅威ではないと思います。 –

答えて

1

短い回答:あなたはcsrfトークンを必要としない 'ユーザー'(認証)がないので、あなたはしません。

+1

すべてのクッキーベースのセッション状態はCSRFの影響を受けます。この場合、セッション状態がないように見えます。 (ほとんどの "機密操作"は認証によって保護されていますが、認証は厳密には前提条件ではありません) – user2864740

+1

ほとんどの時間はそうですが、この理由で彼はcsrf保護を必要としません – azjezz

+0

私はこの場合の結論に同意します。 – user2864740

2

あなたの疑問にお答えしますが、CSRFの保護は意識的な決定でなければなりません。私はあなたが少なくともあなたのアプリケーションでそれをやろうと思っているかもしれないと思うが、ここにその理由がある。

CSRFは悪意のあるWebサイトにアクセスしている間に、ユーザーが誤ってアプリケーション内のアクションを実行してしまうような別のWebサイトです。本当に、これはユーザーが既にログインしているという事実を利用していますが、必ずしもそうであるとは限りません。あなたのアプリケーションのために

、すぐに頭に浮かぶ2 CSRF関連の脅威は、次のとおりです。

  • ハッシングは非常にCPU集中型であり、また、他の方法で、大きな虹のテーブル内の検索操作も可能リソース集中。これ自体はすでにサービス拒否の危険にさらされていますが、例えば、あまりにも多くのリクエストでソースIPをフィルタリングすることでこれを防ぐことができます。しかし、あなたのアプリがCSRFに対して脆弱である場合、トラフィックの多いウェブサイトでは訪問者がアプリ内でそのような操作を行い、分散DoSを効果的に実行することができます。

  • 非常に同様に、あなたがアプリのAPIを持っていてCSRFに対する保護がない(例えば、あなたがaccess-control-allow-origin:*を持っている)場合、他のウェブサイトはそれらと同じくらい多くのクエリを実行できますハッシュまたは検索のいずれかが必要なため、収入の損失またはサービス拒否の分散を招く可能性があります)。これらは、あなたの正確なユースケースには適用されません

はたぶん、私はいかなる種類のセッション状態が存在しないにもかかわらず、CSRFは確かに問題になることに注意したかった、とツールが体系的なを明らかに潜在的な脅威を脅威モデルといいます。

+0

CORSは、ブラウザのXHR/intrapageリソース要求にのみ適用されます。これにより、特定のクラスのCSRFがこれらのアクセスを「カバー」することで緩和されますが、CSRFを解決することはできません。だから、 "高価なGET操作"があると想像して、CSRFを有効にすることでこれを防ぐことができますか? – user2864740

+0

@ user2864740私はそれを提案するつもりはありませんでした。私は、CSRFがセッション状態と従来の意味での状態変化なしにこのアプリケーションで問題になることができる2つのシナリオを提案しました。 GET操作は本質的にCSRFに対して脆弱であるため、GETを使用して適切なCSRF保護を実際に実装することはできません。 –

+0

それはCSRFではありません。:}私は、アプリケーションを強化するためのより良い方法を使用することに反対していません(そして、CORS/DDoSの立ち上げは非常に有効です)が、CSRFは非常に狭い定義です。 – user2864740

関連する問題