谷歌ウェブ
注:この機能は,Citrix ADCリリス10.5.eで使用できます。
谷歌Web Toolkit (GWT)リモートプロシージャコール(RPC)メカニズムに従ったWebサーバーは,GWTサポートを有効にするための特定の構成を必要とせずにCitrix Web AppFirewallによって保護できます。
gwtとは何ですか?
JavaScript XMLHttpRequest, GWTはおよびの専門知識を持っていない人々によって複雑な高性能Webアプリケーションを構築し,最適化するために使用されます。このオープンソースの無料開発ツールキットは,小規模および大規模アプリケーションの開発に広く使用されており,フライトやホテルなどの検索結果などのブラウザベースのデータを表示するためによく使用されます。GWTは,ほとんどのブラウザやモバイルデバイス上で実行することができ,最適化されたJavaScriptスクリプトを書くためのJava APIとウィジェットのコアセットを提供します。GWT RPCフレームワークは,WebアプリケーションのクライアントとサーバーコンポーネントがHTTP経由でJavaオブジェクトを交換することが容易になります。GWT RPCサビスは,SOAPまたはRESTに基づくWebサビスと同じではありません。これらは,単にクライアント上のサーバーとGWTアプリケーション間でデータを転送するための軽量な方法です。GWTは,Javaメソッド呼び出しと戻り値の引数を交換する。
GWTを使用する一般的なウェブサereplicationトにereplicationいては,
https://www.quora.com/What-web-applications-use-Google-Web-Toolkit-%28GWT%29
gwtリクエストの仕組み
GWT rpc要求は、パereplicationプで区切られ、引数の数が可変です。これはHTTP postのペ邮箱ロドとして搬送され,次の値を持ます。
- - type =文本/ x-gwt-rpc。文字セットには任意の値を指定できます。
- 方法=。
コンテンツタイプが“テキスト/ x-gwt-rpc”である場合,GETとPOST HTTP要求の両方が有効なGWT要求とみなされます。クエリ文字列は,gwt要求の一部としてサポトされるようになりました。アプリケーションファイアウォールプロファイルの“InspectQueryContentTypesパラメータを“其他”に設定して,コンテンツタイプの“文本/ x-gwt-rpc”のリクエストクエリ部分を調べます。
次の例は,gwt要求の有効なペ。
5 | 0 | | 8 http://localhost: 8080 /测试/ | 16878339 f02b83818d264ae430c20468 | com.test.client.TestService | testMethod |以| . lang。整数| myInput1 | . lang。整数/ 3438268394 | 1 | 2 | 3 | 4 | 2 | 5 | 6 | 7 | 8 | 1 | < !——NeedCopy >
リクエストは,次の3の部分に分けることができます。
一)标题:8 | 5 | 0 |
上記のリクエストの最初の3桁5 | 0 | 8 |
は,それぞれ"バ,Subversion,およびテ"を表します。これらは正の整数でなければなりません。
b)文字列テブル:
http://localhost: 8080 /测试/ | 16878339 f02b83818d264ae430c20468 | com.test.client.TestService | testMethod |以| . lang。整数| myInput1 | java.lang.Integer / 3438268394 |
上記のパ。これらの入力は,Web应用防火墙チェックのために解析され,次のように識別されます。
第 1:
http://localhost:8080/test/
これはリクエストurlです。
第2回:
16878339 f02b83818d264ae430c20468
一意の16進識別子。この文字列に16進以外の文字が含まれている場合,要求は不正な形式と見なされます。
第3回:
com.test.client.TestService
サビスクラス名
第4回:
testMethod
サビスメソッド名
5 回目以降:
以| java.lang.Integer | myInput1 | java.lang.Integer / 3438268394
デタ型とデタ。非プリミティブデタ型は,
<容器>。< sub-cntnr > . name / <整数> <标识符>
c)有效载荷:1 | 2 | 3 | 4 | 2 | 5 | 6 | 7 8 | 1 | |
ペロドは,文字列テブル内の要素への参照で構成されます。これらの整数値は,文字列テブル内の要素数より大きくすることはできません。
GWTアプリケション用のWebアプリケ
GWT Web应用防火墙は,RPC要求を理解して解釈し,ペイロードにセキュリティチェック違反がないか検査し,指定されたアクションを実行します。
GWTリクエストのWeb应用防火墙ヘッダーと饼干チェックは,他のリクエスト形式のものと似ています。適切なurlデコドと文字セット変換の後,文字列テタが検査されます。gwtリクエスト本体には,フィルド名だけフィルド値が含まれていません。入力値は,Web应用防火墙字段格式チェックを使用して,指定した形式に対して検証できます。このチェックは,入力の長さの制御にも使用できます。入力におけるクロスサ邮箱トスクリプティング攻撃とSQL SQLンジェクション攻撃は,Web应用程序防火墙によって容易に検出され,阻止されます。
学習と緩和のルル:緩和ルルの学習と展開は,gwt要求でサポトされています。Web应用防火墙ルールは、
アクションurl:
1のRPCに応答する複数のサビスを同じWebサバ上に構成できます。HTTP要求には,RPCを処理する実際のサービスではなく,WebサーバーのURLがあります。したがって,httpリクエストurlに基づいて緩和が適用されることはありません。これは,タゲットフィルドのurlのすべてのサビスが緩和されるためです。GWT要求の場合,Web应用防火墙は文字列テーブルの4番目のフィールドにあるGWTペイロードで見つかった実際のサービスのURLを使用します。
フィルド名:
GWTリクエスト本文にはフィールド値のみが含まれているため,Web应用防火墙は学習したルールを推奨するときに,1、2などのダミーのフィールド名を挿入します。
gwt学習ルルの例
POST /abcd/def/gh HTTP/1.1 Content-type: text/x-gwt-rpc Host: 10.217.222.75 Content-length: 157 5|0|8|http://localhost:8080/acdtest/|16878339F02Baf83818D264AE430C20468| com.test.client.TestService|testMethod|java.lang. string %3b|java.lang. stringInteger|onblur|学习数据如下:> sh learningdata pr1 crossSiteScripting Profile: pr1 SecurityCheck: crossSiteScripting 1) Url: http://localhost:8080/acdtest/ >> From GWT Payload。字段:10 Hits: 1 Done
GWT緩和規則の例
绑定appfw profile pr1 -crossSiteScripting 1 abcd -isregex NOTREGEX
ログメッセジ: Web应用防火墙は,GWT要求で検出されたセキュリティチェック違反のログメッセージを生成します。不正な形式のGWT要求によって生成されたログメッセージには,簡単に識別するための文字列“GWTが含まれています。
不正な形式のgwt要求のログメッセジの例:
12月5日21:48:02
gwtと非gwtリクエストの処理における違い:
同じペイロードによって,異なるコンテンツタイプに対して異なるWeb应用防火墙セキュリティチェック違反が発生する可能性があります。次の例を考えてみましょう。
5 | 0 | | 8 http://localhost: 8080 / acdtest / | 16878339 f02baf83818d264ae430c20468 | com.test.client.TestService | testMethod |以% 3 b | java.lang.Integer |选择|
内容类型:应用程序/ x-www-form-urlencoded:
SQLインジェクションタイプが利用可能な4つのオプション(SQLSplCharandKeyword, SQLSplCharORキーワード,SQLKeyword,またはSQLSplChar)のいずれかを使用するように構成されている場合,このコンテンツタイプとともに送信された要求はSQL違反になります。Web应用程序防火墙では,上記のペイロードを処理するときに' & 'がフィールドセパレータであり,‘=’が名前と値のセパレータであると見なされます。これらの文字はいずれもポスト本体のどこにも表示されないため,コンテンツ全体が単一のフィールド名として扱われます。このリクエストのフィールド名には,SQL特殊文字(,)とSQLキーワード(選択)の両方が含まれています。したがって4つのSQLインジェクションタイプのオプションすべてに対して違反がキャッチされます。
内容类型:文本/ x-gwt-rpc:
このコンテンツタイプで送信された要求は,SQLインジェクションの種類がSqlSplCharorKeyword, SqlKeyword,またはSqlSplcharの3つのオプションのいずれかに設定されている場合にのみ,SQL違反をトリガーします。SQLインジェクションタイプがデフォルトオプションのSQLSplCharANDKeywordに設定されると,違反はトリガーされません。Web应用防火墙は,垂直バ|
をgwtリクエストで上記のペ。そのため,ポストボディはさまざまな表单字段値に分割され,(上記の規則に従って)表单字段名が追加されます。このスプリットによって,SQL特殊文字とSQLキーワードが個別のフォームフィールドの一部になります。
フォムフィルド8:. lang。字符串%3b -\> %3b是(;)字符
フォムフィルド10:选择
その結果,sql操作系统ンジェクションタ操作系统プがSQLSplCharに設定されている場合,フィルド8はSQL違反を示します。SQLKeywordの場合,フィルド10は違反を示します。sql econeconンジェクションタeconeconeconプがSQLSplCharORKeywordオプションを使用して構成されている場合,これら2つのフィールドのいずれかが違反を示している可能性があります。このオプションでは,キワドまたは特殊文字の存在が検索されます。デフォルトのSQLSplCharANDKeywordオプションに対して違反は捕捉されません。これは,SQLSplCharとSQL关键字の両方を含む値を持単一のフィルドがないためです。
チップ:
- GWTサポートを有効にするために,特別なWeb应用防火墙設定は必要ありません。
- コンテンタ/x-gwt-rpcである必要があります。
- GWTペイロードに適用されるすべての関連するWeb应用防火墙セキュリティチェックの緩和ルールの学習と展開は,サポートされている他のコンテンツタイプの場合と同様に機能します。
- 唯一のpost要求は,gwtのために有効とみなされます。コンテンツタイプが文本/ x-gwt-rpcの場合,他のすべての要求メソッドはブロックされます。
- GWT要求は,プロファルの設定済みのpost本文制限に従います。
- セキュリティチェックのセッションレス設定は適用されず,無視されます。
- Cefログフォマットは,gwtログメッセトされています。