2

HTTP を使用して通信する組み込み C プログラムを作成しています。私はそれを機能させましたが、私は以前にネットワーキングをあまり行ったことがなく、本当に悪い仮定をしていないことを確認したかっただけです.

Content-Type を持つ悪意のない HTTP パケットにはtext/<something>、ゼロが含まれていないと安全に想定できますか? 私のコードには、文字列の末尾にある '\0' だけに依存している場所がかなりあります。指定された Content-Length の後に常に停止し、書き込み中のバッファーがオーバーフローすることはありませんが、可能な限り低レベルのものが機能することを確認したいと思います。これらのデバイスが出荷されると、これらのパーツを更新できなくなります。

また、ネットワーク プログラミングに共通の落とし穴があるリソースを誰か教えてもらえますか?

4

3 に答える 3

7

いいえ、メッセージが準拠していることを保証できたとしても、それは安全な仮定ではありません。たとえば、UTF-16 テキストにはほぼ確実に NUL バイトが含まれます。

また、構成が不十分な Web サーバーは、クライアントが受け入れなくても gzip データを提供する可能性があります。

于 2013-03-18T15:42:02.653 に答える
4

いいえ、それを想定するのは間違いなく安全ではありません。

ユーザーが Web ブラウザーを使用していることを知る方法はありません。攻撃者は、任意のデータをアプリケーションに送信するアプリケーションを作成する可能性があります。このデータは、Web ブラウザから送信されたように見えますが、ヌル文字を送信してプログラムをクラッシュさせます (さらに悪いことに、バッファ オーバーフローを悪用します)。

ユーザーデータを信用しないでください!

組み込みデバイスのプログラミングでは、高度なセキュリティ基準を持つことが特に重要です。これらのデバイスのソフトウェアは、出荷後に脆弱性が検出された場合、通常は更新が難しいためです。

于 2013-03-18T15:44:13.940 に答える
4

いいえ、それは安全な仮定ではありません。

任意の入力は悪意を持って不正な形式であると常に想定してください。

于 2013-03-18T15:41:31.257 に答える