Apple のセキュア コーディング ガイドドキュメントには、次のガイダンスが記載されています。
- フォーマット文字列攻撃
- バッファオーバーフロー
とにかく明確でないのは、NSString を使用するときにフォーマット文字列攻撃とバッファ オーバーランを防ぐ方法です。
このような攻撃から防御するにはどうすればよいですか? これを防ぐために適用できるカテゴリはありますか? 私が使用できる「安全な」NSStringに相当するものはありますか?
Apple のセキュア コーディング ガイドドキュメントには、次のガイダンスが記載されています。
とにかく明確でないのは、NSString を使用するときにフォーマット文字列攻撃とバッファ オーバーランを防ぐ方法です。
このような攻撃から防御するにはどうすればよいですか? これを防ぐために適用できるカテゴリはありますか? 私が使用できる「安全な」NSStringに相当するものはありますか?
NSString
バッファ オーバーランは一般に、データを に格納する場合には問題になりません。これはNSMutableString
、 を作成するときにNSString
、与えるデータの量を伝える必要があり、与えるデータを保持するのに十分なプライベート ストレージを自動的に割り当てるためです。それ。const
公開された API に固執し、返されたポインターからキャストしてポインターUTF8String
を介して書き込むなどの悪ふざけを試みないでください。
NSMutableData
は とは異なり、書き込みが許可されているメモリへのポインタを返すメッセージをNSMutableString
提供することに注意してください。mutableBytes
したがって、その API を使用している場合は、バッファ オーバーランに注意する必要があります。
フォーマット文字列については、そのドキュメントのアドバイスに従うだけです。たとえば、信頼できないソースからのデータを format 引数として、または format 引数の一部として渡さないでください。通常、フォーマット文字列は文字列リテラルにするか、 から返す必要がありますNSLocalizedString
。
の「安全な」バージョンはありませんNSString
。