問題タブ [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.
javascript - ColdFusion エンコーディングの問題 - encodeForHTML および encodeForJavascript でバックスラッシュが削除される
クロスサイト スクリプティング (XSS) から保護するために、OWASP が推奨するESAPI (Enterprise Security API)を使用しています。 esapi.jar ファイルは以前のバージョンの ColdFusion に含まれていましたが、CF10では、 encodeForJavascript()
、encodeForHTML()
、encodeForURL()
、encodeForCSS()
、およびencodeForHTMLAttribute()
.
で問題が発生しencodeForJavascript()
ています。バックスラッシュが失われています...
encodeForJavaScript()
JavaScript コンテキストにいるため、最初に呼び出します。
encodeURIComponent()
次に、URL が適切に構築されていることを確認するために呼び出します。
すべて正常に動作しますが、結果のページでバックスラッシュが失われました\
。ここで何が欠けていますか?
(はい、出力する場所も保護する必要があることは承知しています#url.name#
。この実験では、ソースを表示して文字列が元の文字列と一致するかどうかを確認する必要があったため、保護しませんでした。)
**更新** - 最新のパッチがすべて適用された ColdFusion 10 を実行しています。に問題があるようですencodeForJavaScript()
。
も失敗しJSStringFormat()
ます。これを行うと、バックスラッシュが両方にないことがわかります...
java - ユーザー指定の url プロパティの ESAPI XSS 防止
私の REST API の 1 つは、ユーザーからの入力として URL を期待するプロパティ「url」を期待しています。XSS 攻撃を防ぐために ESAPI を使用しています。問題は、ユーザーが指定した URL が次のようなものであることです。
http://example.com/alpha?abc=def&phil=key%3dbdj
ESAPI エンコーダーの cannonicalize メソッドは、ここで侵入例外をスローし、入力にエンコードが混在していると主張します。これは、URL がエンコードされており、'&phi' が HTML エンコードされたものとして扱われ、例外が発生するためです。
2 番目のクエリ パラメータが「pa」または「pi」で始まり、HTML デコードによってデルタまたはパイ文字に変換されたアプリケーション URL の 1 つをサニタイズする際に、同様の問題がありました。以前の Stackoverflow の質問を参照してください。
問題は、URL 全体がユーザーからの入力として送られてくるため、単純にクエリ パラメータを解析して個別にサニタイズすることはできません。悪意のある入力が 2 つのクエリ パラメータを組み合わせて作成され、それらを個別にサニタイズしてもうまくいかないからです。場合。
例: <scr come は最初のクエリ パラメータ値の最後の部分であり、ipt>alert(0); または、次のクエリ パラメータ コントロール コンテキストの最初の部分として何かが来ます。
誰かが同様の問題に直面しましたか?皆さんが実装したソリューションを知りたいです。ご指摘ありがとうございます。
編集:「avgvstvs」からの以下の回答は、侵入例外をスローしません (ありがとう!!)。ただし、cannonicalize メソッドは元の入力文字列を変更するようになりました。ESAPI は、クエリ パラメータの &phi を HTML でエンコードされた文字として扱い、「?」に置き換えます。文字。ここにリンクされている私の前の質問のようなもの。違いは、これがユーザー入力であるのに対し、私のアプリケーションの URL であるということです。ここでホワイトリストを維持する唯一のオプションはありますか?
java - Esapi と空白文字列の replaceAll の使用
String.replaceAll("","");
Java の文字列から「空白」または「印刷されない文字」を排除する手段としての使用への参照を見てきました。答えが示すように、これは誤りです。
value = value.replaceAll("", "");
eclipse - 「esapi」は Websphere 7 では定義されていません
Eclipse の esapi4java-core-2.0-install-guide.pdf に従い、Websphere 7.5 環境に適用しています。
ステップ 1 - ライブラリに esapi.jar を追加しました ([プロジェクト] > [プロパティ] > [Java ビルド パス] > [ライブラリ] タブ > [外部 JAR の追加])。
ステップ 2 - マシンのフォルダーに esapi & validation .properties ファイルを配置しました。
ステップ 3 - すべての実行構成に esapi を追加することを選択しました (Windows > Preferences > Java > Installed JREs)。WebSphere Application Server v7.0 JRE を強調表示し、[編集] を選択して、そのライブラリ リストに esapi.jar を追加しました。同じフォームで、-Dorg.owasp.esapi.resources="/path/to/.esapi" 引数を Default VM Arguments プロンプトに追加しました。これは、esapi および検証 .properties ファイルが配置されている場所へのパスです。
失敗する JSP ページのコードは次のとおりです。
このコードを実行すると、次のエラーが表示されます: 'ESAPI' is undefined (これは var isValidURL ステートメントで発生します)。
私は何が欠けていますか?
java - Java ESAPI のタグのホワイトリストを追加する方法
YouTube ビデオを追加する機能を含む、リッチ テキスト編集機能をサイトに追加します。しかし一方で、安全性を維持し、XSS/HTML インジェクションを防止したいと考えています。以前は、データをエスケープするために次のコードを使用していました。
次に、許可されたタグのホワイトリストを追加する必要があります。この機能を実装する方法はありますか?
oracle - ESAPI を Oracle HTTP サーバーまたは IBM HTTP サーバーと統合する方法
ESAPIの C 言語固有のプラグインを Oracle HTTP または IBM HTTP サーバーと統合する方法はありますか。つまり、セキュリティを実現するために、C-Lang 固有のコードを Oracle HTTP サーバーと統合できます。これは Java 固有のプラグインである可能性があります。サニタイズを達成するには、どのような手順に従う必要がありますか?
前もって感謝します、
バヌ。
rest - メールアドレス「blabla@example.com」のESAPI
関連する質問をいくつか見ました。しかし、私が探していたものは正確には得られませんでした。これがばかげた要求であることが判明した場合は、申し訳ありません。うまくいけば、私はこの特定のクエリを持っています:
だから私はMySQLデータベースでReST APIを作ろうとしています。基本的にユーザーの有効な電子メールアドレスを引き出しているテーブルからデータを読み取ろうとしています。出力は HTML ページに表示されます。
出力:temp = blabla@gmail.com
どうすればこれを回避できますか? blabla@email.com を取得します
ここでの動作は想定どおりだと思います。しかし、条件付き処理 (if..else) を回避する方法があるかどうかを知りたかっただけです。また、誰かが ESAPI の設計上の選択の背後にある理由を教えてくれたらどうでしょうか。面白く読めるはずです。