3

Apple のセキュア コーディング ガイドドキュメントには、次のガイダンスが記載されています。

  • フォーマット文字列攻撃
  • バッファオーバーフロー

とにかく明確でないのは、NSString を使用するときにフォーマット文字列攻撃とバッファ オーバーランを防ぐ方法です。

このような攻撃から防御するにはどうすればよいですか? これを防ぐために適用できるカテゴリはありますか? 私が使用できる「安全な」NSStringに相当するものはありますか?

4

1 に答える 1

5

NSStringバッファ オーバーランは一般に、データを に格納する場合には問題になりません。これはNSMutableString、 を作成するときにNSString、与えるデータの量を伝える必要があり、与えるデータを保持するのに十分なプライベート ストレージを自動的に割り当てるためです。それ。const公開された API に固執し、返されたポインターからキャストしてポインターUTF8Stringを介して書き込むなどの悪ふざけを試みないでください。

NSMutableDataは とは異なり、書き込みが許可されているメモリへのポインタを返すメッセージをNSMutableString提供することに注意してください。mutableBytesしたがって、その API を使用している場合は、バッファ オーバーランに注意する必要があります。

フォーマット文字列については、そのドキュメントのアドバイスに従うだけです。たとえば、信頼できないソースからのデータを format 引数として、または format 引数の一部として渡さないでください。通常、フォーマット文字列は文字列リテラルにするか、 から返す必要がありますNSLocalizedString

の「安全な」バージョンはありませんNSString

于 2012-10-18T03:53:23.773 に答える