まず、あなたのいずれかがDoS攻撃を防ぐためにできることは何もありません。
あなたのコードを分かりやすくする(開発者)と、あなたのアーキテクチャを強く(SysAdmin)することができます。それは共同努力です。
開発者は、DoS攻撃だけでなく、リソースの使用をジョブの一部として最小限に抑える必要があります。
開発者は、データベースを保護するためにキャッシュを使用する必要があります。すべてのリクエストが国のリストを参照する必要がある場合は、毎回データベースからそのリストを要求することは、とにかく良い方法ではありません。
開発者は、悪いリクエストができるだけ早く失敗するようにする必要があります。例えば。自分のアカウント番号が実際に存在することを確認するまで、国リストには一切問い合わせをしないでください。
開発者は、RESTのようなアプローチを採用する必要があります。セッションをメモリに保持するのではなく、個々に処理することです。これにより、攻撃中にメモリ使用量が急増するのを防ぐことができます。メモリの問題やネットワークの浸水を避けたい!
開発者はアプリケーションをスケーラブルにする必要があります。繰り返しますが、メモリに記憶されたものに縛られていないので、RESTはここで役立ちます。要求のサブセットを処理するアプリケーションのインスタンスを一度に10個実行することができれば、DoS攻撃の方がはるかに長くなります(とにかく、よりスムーズなWebエクスペリエンスを提供することができます)。
SysAdminsは、このスケーラビリティを管理するための負荷分散、フェールオーバーなどのフレームワークを提供する必要があります。また、インスタンスのハードウェアも管理します。オンデマンドで自動的にインスタンスを追加することもできます。つまり、サーバーの自動作成と展開が重要になります。物理的なボックスではなくVMを使用すると、これを手助けすることができます。
SysAdminsは、攻撃が行われたときにREALトラフィックを通過させ、攻撃トラフィックを停止できるように、ファイアウォールとプロキシを設定できます。疑わしいIP範囲でトラフィックをフィルタリングしたり、疑わしいリクエストをブロックしたり、トラフィックレベルを緩やかなフローに絞り込んだりすることができます。
全体として、DoSは単に「トラフィック量が多い」と見ることができます。アプリケーションコードとアーキテクチャが「通常のユーザー」からのトラフィックの増加に対処できない場合、DoS攻撃に関係なく、とにかく運命づけられます。 FacebookがDoSに脅かされたとき、私は「EverydayはFacebookのためのDDoS攻撃です...」と指摘した人を覚えています。しかし、それはそれが対処するような方法で開発され構造化されている。