C# Tips | セキュリティ:Path Traversal対策

C# C#
スポンサーリンク
スポンサーリンク

Path Traversal対策は「ファイルシステムを攻撃から守るための必須防御」です

業務システムやWebアプリケーション、API、バッチ処理などでファイルを扱う読者のみなさんにとって、 Path Traversal(パストラバーサル)攻撃は、見落とされがちですが非常に危険な脆弱性です。 ユーザー入力をそのままファイルパスに使ってしまうと、 攻撃者が ../ などを使って意図しないディレクトリにアクセスし、 機密ファイルの読み取りや上書き、削除などにつながる可能性があります。

ここでは、プログラミング初心者の方にも分かるように、 C#で実務的に使える Path Traversal対策ユーティリティ をステップバイステップで解説し、 例題・コード・テンプレートを交えて詳しく説明していきます。

Path Traversal攻撃の仕組みをかみ砕いて理解する

何が危険なのか

典型的な危険なコードは次のようなものです。

string baseDirectory = "/var/app/uploads";
string fileName = GetUserInput(); // ユーザー入力
string path = Path.Combine(baseDirectory, fileName);

string content = File.ReadAllText(path);
C#

一見すると問題なさそうですが、 fileName に次のような文字列が入っていたらどうなるでしょうか。

../../etc/passwd

すると、Path.Combine の結果は /var/app/uploads/../../etc/passwd となり、 GetFullPath で解決すると /etc/passwd のような「本来アクセスしてはいけないファイル」に到達してしまう可能性があります。

これがPath Traversal攻撃です。

タイトルとURLをコピーしました