私たちはURLでLANGパラメータを渡すと、私は返すRequestContextUtils.getLocale(リクエスト)、によって、ロケールを取得することができ、コードでのGrailsアプリケーションGrailsは
/url?lang=de
のロケールを変更することを知っていますlangパラメータを使用して、ParamsAwareLocaleChangeInterceptor(grailsソースの一部)で設定されたロケール。
スクリプトまたは破損した文字列がlangパラメータに値として渡された場合、同じクラップがロケールとして設定されます。
/url?lang=>"'><script>alert(167) </script>&=>"'><script>alert(167)</script>
この要求では、httpヘッダーのContent-languageは、langパラメータのscript = valueに設定されます。このRCU.getLocale()の後には、多くのコンテンツがロケールに基づいて決定されるため、私のサイトのコンテンツを乱すこの悪意のあるスクリプトが返されます。この問題を回避する方法(ロケールを設定する前にlangをサニタイズする)か、これはgrailsのバグですか?
また、langで渡されている内容を制限できますか?例:サイトで 'en'と 'de'だけがサポートされている場合、/ url?lang = esを渡すとコンテンツが壊れます。 grailsインターセプタでロケールの変更が起こる前に、langパラメータの値を 'en'と 'de'だけに制限する方法がありますか?
これはおそらくバグです。 [いくつかのコードはここ](http://stackoverflow.com/questions/2819768/grails-language-prefix-in-url-mappings) を使用して回避することができます。 –
'/ url?lang'を渡すのではなく、コントローラからロケールを設定したいかもしれません。アクション内でnate_weldonの 'setLocale'コードを使用し、言語セレクタでそのアクションにリンクするだけです。 – GalmWing
なぜゴミ箱はゴミをチェックするのですか? langがロケールを変更するために使用できる機能はまったく役に立たない。 – scout