をフィルタリングするためにどのような文字私は、静的な文字列を構築します。その文字列では、ファイル名はその文字列のフロントエンドから渡されます。このようにして、ユーザは改ざんや、他のユーザからデータを取得するために別のfile.file .. \ .. \のようなものを行うことができます。そのため、私はこれを防ぐために得たファイル名をフィルタリングする必要があります。改ざんを防止するためにフィルタリングする必要がある文字は何ですか?私は今二重の点と、前後のスラッシュを持っています。私が考慮すべき他に何かありますか? C#でこれを行うための標準的な方法がありますか?ダウンロード/アップロードファイルには、私のアプリケーションでは、C#
1
A
答えて
2
私はPath.GetInvalidFileNameChars
を使用することをお勧めします:先行および/またはGetInvalidFileNameChars
によって返された配列に含まれていますどちらも\
または/
、によって成功したとき
public static bool IsValidFileName(string fileName)
{
return fileName.IndexOfAny(Path.GetInvalidFileNameChars()) == -1;
}
..
は、典型的に危険です。それ自体で、(あなたは、特にディレクトリパスを解決していない限り)..
は無害であり、人々は彼らのファイル名(例えばThe A...Z of Programming.pdf
)で楕円を紹介したい場合がありますので、あなたはそれを禁じるべきではありません。別のユーザーが同じ名前でファイルを保存する場合はどう
2
?ユーザーごとにフォルダを作成していますか?
は、ほとんどの場合、あなたがやるべきものを、彼らはまた、(あなたが生成するファイル名を使用して、おそらくGUID)実際のファイルへのポインタが含まれているデータベース・レコードに指定した名前を記憶しています。あなたが同様のデータベースで文書を保存したい場合にも、ファイルストリームデータ型を使用することを検討してください可能性があります。良い
何もユーザーがサーバー上のファイル名を決定させることから来ることができません:)
関連する問題
- 1. は私のアプリケーションでは、C#
- 2. は、C#の私のアプリケーションで
- 3. 私のアプリケーションではC#
- 4. 私はC#アプリケーション
- 5. のポインタは、私のCアプリケーションで
- 6. リンク、私のC#アプリケーションではINTEROP.DOMINO.DLL
- 7. は、どのように私はC#に新しいですC#のWindowsアプリケーション
- 8. は、どのように私はC#Windowsアプリケーションで
- 9. C#が - 私は、コンテキストメニューを表示したい私のC#アプリケーションでは、コンテキストメニュー
- 10. コンパイラはCで私の最初のアプリケーションの作成インストールライブラリヘッダに
- 11. ポスティングデータ私は私のC#アプリケーションに次のコードを使用しているC#
- 12. は私のアプリケーションではアプリ
- 13. 私のアプリケーションにC#/ .NetまたはC++を付けるべきですか?
- 14. はどのように私は私のWebアプリケーションではasp.net
- 15. 私のアプリケーションのメモリサイズをCで修正する方法は?
- 16. Cは、私はC言語でアプリケーションを1つ持っている
- 17. は、私は私のasp.net MVCアプリケーション(非常に小さなアプリケーション)
- 18. SqlDependencyは、C#のWindowsではアプリケーションのプロパティ
- 19. C#Windowsフォーム - のSendMessage EM_SETCUEBANNERテキストボックスには、私は、WindowsフォームでのC#でアプリケーションを作ってるんだ
- 20. キャプチャのdiv - 私のC#のWindowsアプリケーションで#
- 21. 私のアプリケーションは、
- 22. 私のC++アプリケーションを公開するには?
- 23. Androidのナビゲーションバーには、私のアプリケーションで
- 24. 私のアプリケーションでは、ファイアウォールルール
- 25. は私のCodeIgniterアプリケーションで
- 26. PDFは私のRailsアプリケーションで
- 27. は私のアプリケーションでUWP
- 28. 私のアプリケーションではJavaScript
- 29. 私のアプリケーションではMEF
- 30. は、どのように私はC#で
私がそのsollutionを選びだしたであろうデータベースで動作することが可能である場合。今のところ、フィルタリングは私の次善策です。 – Patrick