2

アプリを Rails 2.3.5 から 3.2.8 に移行しています。1 つのフォームは reCAPTCHA (erb ファイル内) を使用します。現在、recaptcha_tags が出力するすべての HTML タグはエスケープされた HTML です。(つまり、<...> ではなく <...>)。そのため、reCAPTCHA ボックスではなく、タグ自体が HTML ページに表示されます。

これが私のerbの外観です。erb のどこに recaptcha タグを配置しても問題ないことを確認しました (form_for の内側または外側)。

register.html.erb

...
<%= recaptcha_tags :public_key => RECAPTCHA_PUBLIC_KEY %>
...

form_for などの他のものには、この問題はありません。それらはストレートな HTML を出力します。

Gemfile

gem "recaptcha", :require => 'recaptcha/rails'

前もって感謝します!

4

2 に答える 2

1

Rails 2.3.5 と 3.X の間の主な変更点の 1 つは、クロス サイト スクリプティングに関する変更です。2.3.14 にアップグレードして rails_xss gem を追加することで、アップグレードを開始することをお勧めします。rails_xss gem (https://github.com/rails/rails_xss) は、HTML の安全性のデフォルトをエスケープに切り替えるため、recaptcha_tags で見られる問題が発生します。これにより、アプリ内のどの文字列を html_safe としてマークする必要があるかを確認できます。

または、recaptcha_tags が唯一の問題である場合は、recaptcha_tags をエスケープしないように Rails に指示することで修正できる場合があります。

何かのようなもの:

<%= raw recaptcha_tags :public_key => "_________" %>
  • 研究をしてくれてありがとう。:)
于 2012-11-03T20:48:04.370 に答える
1

recaptcha_tags 呼び出しの前に「raw」を付ける必要があることがわかりました。

register.html.erb

...
<%= raw recaptcha_tags :public_key => RECAPTCHA_PUBLIC_KEY %>
...
于 2012-11-04T03:42:30.077 に答える