2012-04-22 3 views
1

をフィルタリングするためにどのような文字私は、静的な文字列を構築します。その文字列では、ファイル名はその文字列のフロントエンドから渡されます。このようにして、ユーザは改ざんや、他のユーザからデータを取得するために別のfile.file .. \ .. \のようなものを行うことができます。そのため、私はこれを防ぐために得たファイル名をフィルタリングする必要があります。改ざんを防止するためにフィルタリングする必要がある文字は何ですか?私は今二重の点と、前後のスラッシュを持っています。私が考慮すべき他に何かありますか? C#でこれを行うための標準的な方法がありますか?ダウンロード/アップロードファイルには、私のアプリケーションでは、C#

答えて

2

私はPath.GetInvalidFileNameCharsを使用することをお勧めします:先行および/またはGetInvalidFileNameCharsによって返された配列に含まれていますどちらも\または/、によって成功したとき

public static bool IsValidFileName(string fileName) 
{ 
    return fileName.IndexOfAny(Path.GetInvalidFileNameChars()) == -1; 
} 

..は、典型的に危険です。それ自体で、(あなたは、特にディレクトリパスを解決していない限り)..は無害であり、人々は彼らのファイル名(例えばThe A...Z of Programming.pdf)で楕円を紹介したい場合がありますので、あなたはそれを禁じるべきではありません。別のユーザーが同じ名前でファイルを保存する場合はどう

2

?ユーザーごとにフォルダを作成していますか?

は、ほとんどの場合、あなたがやるべきものを、彼らはまた、(あなたが生成するファイル名を使用して、おそらくGUID)実際のファイルへのポインタが含まれているデータベース・レコードに指定した名前を記憶しています。あなたが同様のデータベースで文書を保存したい場合にも、ファイルストリームデータ型を使用することを検討してください可能性があります。良い

何もユーザーがサーバー上のファイル名を決定させることから来ることができません:)

+0

私がそのsollutionを選びだしたであろうデータベースで動作することが可能である場合。今のところ、フィルタリングは私の次善策です。 – Patrick

関連する問題