電話をかけるとendsWith(".pdf")
、malware.pdf.exeが開きますか、それともmalware.pdfだけが開きますか?
String sFileName = request.getParameter("fName");
if (sFileName.toLowerCase().endsWith(".pdf"))
// open file
else
// don’t open the file
.endsWith("string")
意図したとおりに実行されます。ただし、それはファイルが実際に pdf であることを意味するものではありません。ヘッダーを確認する方法の詳細については、この SO の質問または他の質問を確認してください。
String.endsWith
ドキュメントどおりに動作します。ただし、ここには明らかな問題がいくつかあります。
NUL 文字\0
は通常、OS ファイル API に関する限り、文字列を終了します (C 文字列を使用するため)。
提供された場合、拡張子によってコンテンツが失われる可能性があり、別のタイプに変更される可能性があります。
一般に、インターネットからダウンロードした PDF をローカル ファイル システムから実行するのは危険です。(Chrome はこれについて警告し、Billy Rios on Content Smugglingを参照してください)。