問題タブ [esapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ESAPI の使用中にパーセント記号を許可するパターン
ESAPI^[\\p{L}\\p{N}:\\-.\\s_&.,$()\\*%]*$
を使用して、フィールドの 1 つを検証するために RegEx を使用しています。
私の入力が1234%
または1234%%
または1234%%%
または%1
TRUEと見なされている場合。しかし、私が入力する%12
か、1234%12
または1234%%12
失敗している場合。
私の観察では、 symbolの後に複数の文字/数字を許可していません%
。
正規表現にエラーがあるかどうかを知ることができますか? %
有効な文字が前後にある任意の数の記号を許可する正規表現パターンは何ですか?
前もって感謝します。
java - DefaultValidator.getValidFileName() の呼び出し時の NoSuchMethoException
ファイル名を検証するために、ESAPI 提供の jar (esapi-2.0_rc11) から DefaultValidator クラスの getValidFileName (String, String, list, boolean) メソッドを使用しようとしています。しかし、実行時に No such method exception が発生します。
これは私のコードです:
私は得ています
java.lang.NoSuchMethodError:org/owasp/esapi/reference/DefaultValidator.getValidFileName(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Z)Ljava/lang/String;
jar に存在するコード:
誰かがこれについて私を助けてください。
tomcat - TomcatのESAPIプロパティファイル
TomcatwarアプリケーションでESAPI暗号化を使用しています。環境ごとに異なるキーとソルトを使用するために、戦争以外のディレクトリからESAPI.propertiesファイルをロードしたいと思います。また、各戦争に異なるESAPI.propertiesファイルがあり、各アプリケーションが個別に構成されることを望んでいます。org.owasp.esapi.reference.DefaultSecurityConfigurationのドキュメントによると、これを実現する方法はいくつかあります。
1)SecurityConfiguration.setResourceDirectory( "C:\ temp \ resources")。
2)System.getProperty( "org.owasp.esapi.resources")
3)System.getProperty( "user.home")+"/.esapi"ディレクトリ内
4)クラスパスの最初の「.esapi」または「esapi」ディレクトリ。
最初の3つのオプションは、Tomcatごとに1つの構成を強制します。つまり、プロパティファイルの場所は、展開されたすべての戦争に適用されます。(最初のオプションはClassLoader.getSystemResourceを使用します-パスがクラスパスの一部である必要があります)
Tomcat構成を使用してそれを達成する方法はありますか?
また、ESAPIのデフォルトのセキュリティ構成をオーバーライドする方法を見つけました。DefaultSecurityConfigurationを拡張してgetResourceFileをオーバーライドできますが、ESAPI javadocは、このメソッドは「絶対に」使用しないでくださいと言っています。その理由はわかりません。
助言がありますか?
java - ThreadLocal共有データ?
どうしても、次のことは不可能ですが、本番環境の1つで発生しています。
設定
- ESAPI 2.01
メインサーブレットフィルターの設定と現在のリクエストスレッドローカルオブジェクトの削除:
/li>
すべてのリクエストはこのフィルターを通過ESAPI.currentRequest()
し、システム全体で使用されます。
- パスA(
http://server/path_a/
)- に達するまで通過します
method_a
。このメソッドにはアクセスできません。path_b
- に達するまで通過します
- パスB(
http://server/path_b
)- に到達するまで通過し
method_b
、からアクセスできませんpath_a
- に到達するまで通過し
これらのパスは両方ともサーブレットフィルターを通過します(マッピング " /*
")
私が受け取ったエラーメールの1つは、エラーをpath_a
スローしていることを示唆しています。これにより、エラーメールが開始され、メールコードで、現在のリクエスト(via ESAPI.currentRequest()
)がリクエスト情報として列挙されます。
問題
エラーメールでは、リクエスト情報はからpath_a
のスタックトレース情報と相関しmethod_b
ていますが、両方が別々のスレッドで実行されるため、これは不可能に思えます。
質問
これはどのように可能ですか?これをローカルで再作成することはできません。設定とクリア以外に、特定の予防措置を講じる必要がありThreadLocal
ますか?これはTomcatのセットアップで問題になる可能性がありますか?道に迷いました。
PS:例としてコードベースが大きすぎるため、質問のコードは簡略化されています
encoding - ESAPI.encoder().canonicalize(query) が正しく動作しない
このような入力タグがあります
次のようなクエリに ESAPI canonicalize 関数を使用してみましたが、機能せず"><script>alert(1);</script>
、ブラウザーでアラートが表示されます。私はそれを正しくやっていますか?
java - ESAPI を使用して HTTP 応答分割の脆弱性を修正する方法
最近の findbugs (FB) の実行後、次のことを訴えます:セキュリティ - HTTP 応答分割の脆弱性次のコードがトリガーされます:
基本的に、'referrer' http パラメータには URL が含まれており、アプリケーションで [戻る] ボタンをクリックすると、ブラウザはその URL に戻ります。パラメータとして URL に追加されます。少し調査した結果、リファラー URL をサニタイズする必要があることがわかりました。もう少し調査した後、この種の機能を提供しているように見えるesapiプロジェクトを見つけました。
ただし、リファラー URL に属さない jscript コードやその他のものなどを検出する方法がわかりませんでした。では、どうすればesapiでそれを達成できますか?
私は試した:
ただし、これは機能しません。私が必要としているのは、次のような関数です。
http://www.google.com (わかりました)
http://www.google.com/login?dest=http://google.com/%0D%0ALocation : javascript:%0D%0A%0D%0Aalert(document.cookie) (問題あり)
それとも、次のステートメントを呼び出すだけで十分ですか?
どんな助けでも感謝します。