Citrix ADC

Prise en charge Web App Firewall pour谷歌Web Toolkit

标记:Cette fonctionnalité est disponible dans Citrix ADC版本10.5.e。

Les servers Web suant Les mécanismes RPC (Remote Procedure Call) de谷歌Web Toolkit (GWT) peuvent être sécurisés par le Citrix Web App Firewall sans nécessiter de configuration spécifique pour activer la prise en charge de GWT。

Qu 'est-ce que GWT

Le GWT est utilisé pour créer et optimiser des applications Web hautes performance complex par des personnes qui n 'ont pas d 'expertise dans XMLHttpRequest et JavaScript。这个小酒馆outils de开发署自由等开源est largement utilisee倒开发des应用一个娇小的et grande中阶梯光栅等是相当frequemment utilisee倒显示des数据基地苏尔le navigateur告诉莱斯结果de矫揉造作的倒les波动率,莱斯酒店等。Le GWT fournit un ensemble de base d 'API Java et de widgets pour écrire des scripts JavaScript optimisés qui peuvent s 'exécuter sur la plupart des navigateurs et des appareils移动。框架RPC GWT便利l ' échange d '对象Java基于HTTP浇注组合客户端和服务器应用程序Web。Les services RPC GWT ne sont pas Les mêmes que Les services Web basés sur SOAP ou REST。Ils sont simplement une méthode légère pour transférer des données entre le server et l 'application GWT sur le client。GWT gère la sérialisation des objets Java en échangeant les arguments dans les appels de méthode et la valeur de reour。

倒connaître les sites Web populaires qui use GWT, voir

https://www.quora.com/What-web-applications-use-Google-Web-Toolkit-%28GWT%29

功能d’une requête GWT

La requête RPC GWT est délimitée par un canal et a unnombre variable d 'arguments。网址:porté HTTP POST et a les valeurers suivantes:

  1. 输入de contou = text/x-gwt-rpc。Charset peut être n ' importle quelle valeur。
  2. Méthode = POST。

Les requêtes HTTP GET et POST sont tout deux considérées comme des requêtes GWT valides si le type de contenu est«text/x-gwt-rpc»。Les chaînes de requête sont désormais wards en charge dans le干部des requêtes GWT。Configurez le paramètre«InspectQueryContentTypes»du profile du pare-feu de l’application sur«Other»pour examiner la party requête pour le type content -type«text/x-gwt-rpc»。

范例suant montre une charge实用有效pour une requête 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 >

La demande peut être divisée en trois party:

一)标题:8 | 5 | 0 |

Les 3 premier chiffres5 | 0 | 8 |De la requête ci-dessus représentent分别«版本,颠覆et taille du tableau»。ceeux -ci doivent être des entiers positifs。

b)表chaînes:

http://localhost: 8080 /测试/ | 16878339 f02b83818d264ae430c20468 | com.test.client.TestService | testMethod |以| . lang。整数| myInput1 | java.lang.Integer / 3438268394 |

我们的成员chaîne délimitée欧洲大陆的土丘,我们的祖国entrées我们的祖国。Ces entrées sont analysées pour les vérifications du Web App Firewall et sont identifiées comme suit:

  • 1 er:http://localhost:8080/test/

    我的agit de l 'URL de la demand。

  • 2高速:16878339 f02b83818d264ae430c20468

    标识HEX唯一。Une requête est considérée comme mal formée si cette chaîne a des caractères non hexadécimaux。

  • 3高速:com.test.client.TestService

    笔名是服务等级

  • 4 e:testMethod

    化名méthode de service

  • 5ème à partir:以| java.lang.Integer | myInput1 | java.lang.Integer / 3438268394

    类型de données和données。Les types de données non pritifs sont spécifiés comme

    <容器>。< sub-cntnr > . name / <整数> <标识符>

c)有效载荷:1 | 2 | 3 | 4 | 2 | 5 | 6 | 7 8 | 1 | |

La charge utility consistent en des références aux éléments de La table de chaînes。客人entières ne peuvent pas être supérieures au nobre d ' éléments dans la table de chaînes。

保护Web应用防火墙注入应用GWT

Le Web App Firewall comderet interprète les requêtes RPC GWT,检查la charge效用pour détecter les违规de contrôle de sécurité et prend les actions spécifiées。

Les en-têtes et Les contrôles des cookies du Web App Firewall pour Les requêtes GWT sont similaires à ceux des aures formats de requête。Après le décodage d 'URL et la conversion de jeu de caractères appropriés, tous les paramètres de la table de chaînes sont inspectés。Le corps de la requête GWT ne continental pas de names de champions, seulement les valeururs de champions。Les valeurs d 'entrée peuvent être validées par rapport au格式spécifié à l 'aide de la vérification格式de champ du Web App Firewall, qui peut également être utilisée pour contrôler la longueur de l 'entrée。Les attaques站点间脚本d 'injection SQLdans les entrées peuvent être facility détectées et contrecarrées par le Web App Firewall。

Règles d '徒弟和放松: L '徒弟等le déploiement des règles de弛缓sont pris en charge pour les demandes GWT。Les règles du pare-feu des applications Web se présentent sous la forme de mappage 。Le format de requête GWT n 'a pas les names de champions et nécessite donc un traitement spécial。Le Web App Firewall insère des noms de champs factices dans les règles apeces qui peuvent être déployés en tant que règles de relax。L 'indicateur -isRegex functionne comme il le fait pour les règles非gwt。

  • URL de l 'action:

    Plusieurs services répondant à unrpc peuvent être configurés sur le même服务器Web。La requête HTTP l 'URL du server Web, et non du service qui gère le RPC。Par conséquent, la relaxation n 'est pas appliquée sur la base de l 'URL de requête HTTP, car cela relâcherait tous les services sur cette URL pour le champ cible。Pour les requêtes GWT, le Web App Firewall utill 'URL du service réel trouvé dans la charge GWT, dans le quatrième champ de la table de chaînes。

  • Nom du champ:

    Étant donné que le corps de requête GWT大陆独特des valeurs de champ, le Web App Firewall insère des names de champ factices telels que 1, 2,等lors de la推荐de règles apements。

    示例d 'une règle d '徒弟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 

    示例règle de放松GWT

    绑定appfw profile pr1 -crossSiteScripting 1 abcd -isregex NOTREGEX

日志信息: le Web App Firewall génère des messages de journal pour les违规de vérification de sécurité détectées dans les requêtes GWT。Un message de journal généré par une requête GWT mal formée continent la chaîne«GWT»pour une identification便利。

示例de message de journal pour une requête GWT mal formée

12月5日21:48:02 10.217.31.247 12/05/2014:21:48:02 GMT ns 0- pe -0: APPFW Message 696 0: "GWT RPC request with malformed payload. "< >阻塞”

Différence dans le traitement des需要GWT,而不是GWT

La même charge实用peut déclencher différentes违规de vérification de sécurité du Web App Firewall pour différents types de contenu。Prenons l ' example suivant:

5 | 0 | | 8 http://localhost: 8080 / acdtest / | 16878339 f02baf83818d264ae430c20468 | com.test.client.TestService | testMethod |以% 3 b | java.lang.Integer |选择|

内容类型:application/x-www-form-urlencoded

Une requête envoyée avec ce type de contenentraîne Une breach SQL si le type d 'injection SQL est configuré pour utiliser l 'une des quatre options disponibles: SQLSplCharANDKeyword, SQLSplCharORKeyword, SQLKeyword ou SQLSplChar。Le Web App Firewall considère ' & ' comme Le séparateur de champ et ' = ' comme Le séparateur nomvaleur lors du traitement de la charge utile ci-dessus。Comme aume de ce caractères n 'apparaît dans le corps de la出版,le contente est traité Comme un seul nom de champ。Le nom du champ dans cette requête continent à la fois un caractère spécial SQL (;) et un mot-clé SQL (select)。Par conséquent, les aggression sont interceptées pour les quatre options de type Injection SQL。

内容类型:text/x-gwt-rpc

Une demande envoyée avec ce type de contenu déclenche Une breach SQL unique si le type d 'injection SQL est défini sur l 'une des trois options suivantes: SQLSplCharorKeyword, SQLKeyWord ou SQLSplChar。auune违规n 'est déclenchée si le类型d 'injection SQL est défini sur SQLSplCharANDKeyword, qui est l 'option par défaut。Le Web App Firewall considère que la barre|垂直的est le séparateur de champ pour la charge实用的城市-dessus dans la requête GWT。Par conséquent, le corps postérieur est divisé en différentes方程式冠军,和方程式冠军的名字ajoutés (conformément à la convention décrite + haut)。有分割的理由,le caractère spécial SQL et le mot-clé SQL devienent des parties de champs de formulaire distinct。

公式冠军8:. lang。字符串%3b -\> %3b是(;)字符

第10名方程式冠军:选择

Par conséquent, lorsque类型d '注入SQL est défini surSQLSplchar, le champ 8 indique la violate SQL。倒SQLKeyword, le champ indique la违例。L 'un de ces deux champs peut inquer une违例si le类型SQL注入est configuré avec L 'optionSQLSplCharORKeyword, qui recherche la présence d 'UN mot-clé ou d 'UN caractère spécial。Aucune违章行为détectée pour l 'optionSQLSplCharANDKeywordPar défaut, car il n 'y a pas de champ独特的qui continental à la foisSQLSplCharSQLKeyword合奏。

委员会

  • Aucune配置spéciale de Web App Firewall n 'est nécessaire pour activer la prise en charge de GWT。
  • Le type de contenu doit être text/x-gwt-rpc。
  • L '徒工et le déploiement des règles de弛弛性倾管les vérifications de sécurité针对性的du Web应用程序防火墙appliquées à la charge实用GWT功能de la même manière que pour les autres types de contenu pris en charge。
  • Seules要求POST sont considérées comme valides pour GWT。Toutes les aures méthodes de requête sont bloquées si le type de contenu est text/x-gwt-rpc。
  • Les requêtes GWT sont soumises à la limited de corps POST configurée du profile。
  • Le paramètre without session pour les vérifications de sécurité n 'est pas application et sera ignoré。
  • 格式CEF est pris en charge pour les messages de journal de GWT。
Prise en charge Web App Firewall pour谷歌Web Toolkit