ホストコンピューターでインターネットへのポートを開き、ターミナルに表示される着信メッセージをリッスンする非常に基本的な python ソケットを考えてみましょう。
このようにポートを大きく開いたままにしておくことは、かなり脆弱であると考えられていますよね? どのセキュリティ機能を実装する必要がありますか? 受信データをサニタイズする必要がありますか? これについて最善の方法は何ですか?
ありがとう。
なぜこれが脆弱になるのでしょうか?あなたのプログラムは、任意の人々 (潜在的にインターネット全体) からの接続を受け入れ、任意のバイトを端末に表示できるようにします。ここには、端末自体という 1 つの攻撃ベクトルしかありません。端末に (たとえば)バイトを出力する代わりに実行するバグがある場合、この設定が原因でシステムが危険にさらされる可能性があります。
しかし、それはありそうもありません。実際、プログラムが完全に壊れていないことを確認するための一般的な手法の 1 つは、プログラムに任意のデータを渡して、爆発するかどうか/どのように爆発するかを確認することです。これはファズ テストと呼ばれ、ファズ テスト時に端末にそのようなバグがあった場合、ファズ テストは単に端末のガベージではなく、非常に興味深い爆発を生成します。
ポートでインターネットにアクセスできるからといって、脆弱性があるとは限りません。実際に悪用可能な欠陥が必要ですが、この場合、おそらく存在しません。(誰にもわからないけれども。)
何を確保しようとしていますか?Pythonを使用してソケットをリッスンしても、Pythonインタープリターに未知の脆弱性がない限り、直接脆弱性にさらされることはありません。
受信メッセージの処理は別の問題です。
端末に書き込んでいる場合、それは受信データが特定の形式であると予想されることを意味しますか?受信データをどのように解析していますか?誰かが/dev/ randomをあなたのポートに入れて、接続を長い間開いたままにしておくとどうなりますか?
メッセージの順序や内容は重要ですか?
等々。コメントするシナリオの詳細は多くないため、推奨事項も同様にあいまいになります。まず、一般的な概念のOWASPセキュアコーディングの原則を見てください(HTTPまたはHTMLを扱っていない場合でも適用できます)。