Java でのパス トラバーサル攻撃の防止
インターネットの急速な発展に伴い、ネットワーク セキュリティの問題はますます重要になっています。パス トラバーサル攻撃は、攻撃者がファイル パスを操作してシステム情報を取得したり、機密ファイルを読み取ったり、悪意のあるコードを実行したりする一般的なセキュリティ脆弱性です。 Java 開発では、パス トラバーサル攻撃を防ぐために適切な方法を講じる必要があります。
パス トラバーサル攻撃の原理は、ユーザーが入力したファイル パスの誤った処理によって引き起こされます。パス トラバーサル攻撃がどのように機能するかを示す簡単なサンプル コードを次に示します。
import java.io.*; public class PathTraversalDemo { public static void readFile(String filePath) { try { File file = new File(filePath); BufferedReader reader = new BufferedReader(new FileReader(file)); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { String userInput = "/path/to/sensitive/file.txt"; readFile(userInput); } }
上記のサンプル コードでは、readFile() メソッドはユーザーが入力したファイル パスを受け取り、ファイルの内容を読み取ろうとします。 。ただし、ユーザーが入力したファイル パスに特殊文字またはディレクトリ トラバーサル記号 (../
など) が含まれている場合、攻撃者は機密ファイルを含むあらゆるファイルを読み取ることができる可能性があります。
パス トラバーサル攻撃を防ぐために、次の提案に従うことができます。
- 入力検証: ユーザーが入力したファイル パスを受け取る前に、厳密に検証する必要があります。正規表現またはホワイトリスト フィルタリングを使用して、ファイル パスに安全な文字とディレクトリのみが含まれていることを確認できます。
// 示例代码 public static boolean isSafePath(String filePath) { // 使用正则表达式检查文件路径 String regex = "^[a-zA-Z0-9-_]+$"; return filePath.matches(regex); } public static void main(String[] args) { String userInput = "/path/to/sensitive/file.txt"; if (isSafePath(userInput)) { readFile(userInput); } else { System.out.println("Invalid file path!"); } }
- ファイル パスの正規化:
canonicalFile()
やgetCanonicalPath()
など、Java が提供するファイル パス処理関数を使用します。ユーザーが入力したファイル パスは絶対パスに正規化され、パス トラバーサルの問題は自動的に解決されます。
// 示例代码 public static void readFile(String filePath) { try { File file = new File(filePath); String canonicalPath = file.getCanonicalPath(); // 正规化文件路径 if (!canonicalPath.startsWith("/path/to/sensitive/")) { throw new IllegalArgumentException("Invalid file path!"); } BufferedReader reader = new BufferedReader(new FileReader(file)); // ... } catch (IOException e) { e.printStackTrace(); } }
- ファイル アクセス許可の制御: アプリケーションが必要なファイルにアクセスするのに十分なアクセス許可のみを持っていることを確認します。たとえば、機密ファイルにアクセス許可を設定して、アプリケーションを実行しているユーザーのみが読み取りできるようにすることができます。
// 示例代码 public static void readFile(String filePath) { try { File file = new File(filePath); if (!file.canRead()) { throw new SecurityException("No permission to read file!"); } BufferedReader reader = new BufferedReader(new FileReader(file)); // ... } catch (IOException e) { e.printStackTrace(); } }
要約すると、Java でのパス トラバーサル攻撃を防ぐには、開発者はユーザーが入力したファイル パスを常に検証し、ファイル パスを処理するために Java が提供する正規化関数を使用する必要があります。さらに、アプリケーションが必要なファイルにのみアクセスできるように、ファイル アクセス許可を厳密に制御する必要があります。
上記のセキュリティ対策を講じることにより、パス トラバーサル攻撃を効果的に防止し、アプリケーションとユーザーのデータ セキュリティを保護できます。設計およびコーディングのプロセス中にセキュリティを最前線に置くと、アプリケーションのセキュリティを効果的に向上させることができます。
以上がJava でのパス トラバーサル攻撃の防止の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

メモ帳++7.3.1
使いやすく無料のコードエディター

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい
