Package com.streamconverter.util
Class ClasspathResourceValidator
java.lang.Object
com.streamconverter.util.ClasspathResourceValidator
クラスパスリソースの取得を行うユーティリティクラス
JAR内にバンドルされたリソースを安全に取得します。
セキュリティ:
- ClassLoaderはクラスパス内でパス正規化を行う("hoge/../fuga" → "fuga")
- クラスパス境界外へのアクセスは不可能("../etc/passwd" → リソース未発見)
- JAR内リソースは読み取り専用(改ざん不可)
- シンボリックリンク攻撃は不可能(ファイルシステムではない)
用途:
- スキーマファイル(XSD, JSON Schema等)
- テンプレートファイル
- 設定ファイル(application.properties等)
-
Method Summary
Modifier and TypeMethodDescriptionstatic InputStreamgetResourceAsStream(String resourcePath) クラスパスリソースを取得しますstatic URLgetResourceUrl(String resourcePath) クラスパスリソースのURLを取得します
-
Method Details
-
getResourceAsStream
クラスパスリソースを取得しますClassLoaderを使用してリソースを取得します。クラスパス境界外へのアクセスは不可能です。
注意事項:
- リソース名はスラッシュ(/)区切りで指定(例: "schemas/test.xsd")
- 先頭にスラッシュを含めない(ClassLoaderの仕様)
- パス正規化あり: "hoge/../fuga" → "fuga" として解決される
- クラスパス外アクセス不可: "../etc/passwd" → リソース未発見
- Parameters:
resourcePath- クラスパスからの相対パス(例: "schemas/test.xsd")- Returns:
- リソースのInputStream
- Throws:
NullPointerException- パスがnullの場合IllegalArgumentException- パスが空、またはリソースが存在しない場合
-
getResourceUrl
クラスパスリソースのURLを取得しますClassLoaderを使用してリソースを取得します。クラスパス境界外へのアクセスは不可能です。
注意事項:
- リソース名はスラッシュ(/)区切りで指定(例: "schemas/test.xsd")
- 先頭にスラッシュを含めない(ClassLoaderの仕様)
- パス正規化あり: "hoge/../fuga" → "fuga" として解決される
- クラスパス外アクセス不可: "../etc/passwd" → リソース未発見
- Parameters:
resourcePath- クラスパスからの相対パス- Returns:
- リソースのURL
- Throws:
NullPointerException- パスがnullの場合IllegalArgumentException- パスが空、またはリソースが存在しない場合
-