問題タブ [html-safe]

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.

0 投票する
2 に答える
10428 参照

ruby-on-rails - Rails 3 で <%= note.html_safe %> と <%= h note.html_safe %> が同じ結果になるのはなぜですか?

何が起こっているのかを理解する必要がある String クラスに抽象化を追加するように感じhtml_safeます。たとえば、

4 行目で、文字列を信頼すると言っている場合、文字列は安全ですが、なぜエスケープできないのでしょうか? でエスケープするにhは、文字列が安全でない必要があるようです。

したがって、1 行目で、文字列が でエスケープされていない場合、h自動的にエスケープされます。5 行目でhは、文字列を 2 回エスケープすることはできません。つまり、<が に変更された後&lt;、 にもう一度エスケープすることはできません&amp;lt;

それで、何が起こっているのですか?html_safe最初は、文字列にフラグを付けて、安全だと言っているだけだと思っていました。では、なぜそれをh回避しないのでしょうか。hフラグの使用にhtml_escape実際に協力しているようです:

1) 文字列が html_safe の場合、hエスケープしません

2) 文字列が html_safe でない場合、文字列が出力バッファに追加されると、 によって自動的にエスケープされhます。

3)hすでに文字列をエスケープしている場合は とマークされhtml_safeているため、もう一度エスケープしてhも効果はありません。(5行目と同じように、その動作はRails 2.3.10でも同じですが、Rails 2.3.5hでは実際に2回エスケープできます...したがって、Rails 2.3.5ではh単純なエスケープ方法ですが、どこかで2.3.10 への行はそれほどh単純ではなくなりました.しかし、2.3.10 は文字列を自動エスケープしませんが、何らかの理由で、メソッドhtml_safeは 2.3.10 用に既に存在します (何の目的で?))

それはまさにそれがどのように機能するのですか?最近では、出力に必要なものが得られず、すぐにhtml_safe変数に追加することがあると思いますが、これは非常に危険な場合があります。XSS 攻撃がそのように導入される可能性があるため、正確にどのように機能するかを理解することが非常に重要になる可能性があります。上記は、正確にどのように機能するかの推測にすぎません。それは実際には別のメカニズムである可能性があり、それをサポートするドキュメントはありますか?

0 投票する
4 に答える
7833 参照

ruby-on-rails - すべてのhtmlタグを許可せずにテキストエリアの改行文字を解析する

ユーザーがコンテンツを入力できるテキストエリア フィールドがあります。\nページにエントリを表示する場合、レールは改行ごとに戻りますが、ページの html では改行がまったくないように見えます。

私が収集したものから、これを回避する標準的な方法は、レンダリングを確実にするために.gsubコマンドを に置き換え\n、最後に<br />aを付けることです。.html_safe<br />

問題は、コンテンツを html_safe にしたくないということです。html は引き続き置換する必要がありますが、<br />タグは (エスケープされていない) コンテンツに挿入する必要があります。

提案をいただければ幸いです。

0 投票する
4 に答える
13272 参照

ruby-on-rails - Rails 3:i18nフォームヘルパーの翻訳でHTMLを使用する

自動フォームラベルヘルパーを使用してフォームラベルを作成し、i18nサポートを介して翻訳してもらいますが、ラベルにHTMLを含めたいので、HTMLを安全にする方法がわかりません。

例えば:

最終的に:

しかし、私はそれを次のようにしたいと思います。

出力の前にエンコードされないように、翻訳をhtml_safeとして指定する方法はありますか?

また、これはHTMLをセットアップするための最もセマンティックな方法のように見えますが、これに完全に間違った方法でアプローチしている場合は、提案を受け入れることができます。

ありがとう :)

更新しました:

0 投票する
1 に答える
776 参照

ruby-on-rails - Ruby on Rails フォーム ヘルパーにエラーがあるとエスケープされる

私は Rails 2.3.9 を使用しており、rails_xssプラグインをインストールしています。html_safe にする必要があるものはすべて作成しましたが、フォーム ヘルパーが検証に失敗した場合の問題に気付きました。間違った電子メール アドレスを入力して検証に失敗すると、ブラウザに次のように表示されます。

これは rails_xss に関係していると思いますが、修正方法がわかりません。ありがとう

0 投票する
1 に答える
1178 参照

ruby-on-rails - 消毒しても安全ですか

私はリッチテキストエディター(CKEditor)を使用しており、他のユーザーに表示されるプロファイルをユーザーが作成できるようにする機会があります。

CKEditorが制御できる属性の多くは、次のように表示すると失われます。

私の質問は、属性「style」を解析できるようにするのは安全ですか?これにより、テキストの色、サイズ、背景色、中央揃え、インデントなどを表示できます。ハッカーが私が知らないものにアクセスできないようにしたいだけです。

0 投票する
3 に答える
5143 参照

ruby-on-rails - 未定義のフィールドを持つhtml_safe

必須ではないフィールドがあります。つまり、nilにすることができます。ビューでffg:myfield.html_safeを使用したいと思います。これは、マイフィールドがないアイテムでは機能しません。例外が発生しましたが、フィールドが定義されている場合にのみhtml_safeを適用するにはどうすればよいですか?ありがとう

0 投票する
3 に答える
2607 参照

ruby-on-rails-3 - Rails 3 I18n翻訳を自動的に安全にする方法は?

Rails 3 を使用しています。I18n に、補間で使用される文字列の「html 安全性」を尊重し、すべての翻訳済み文字列をデフォルトで html 安全にするように指示する簡単な方法はありますか? だから私はこれを持っている場合en.yml:

を使用するt('user_with_name', :name => @user.name)と、ユーザー名の html がエスケープされますが、そのままに<em>なり</em>ますか?

0 投票する
1 に答える
740 参照

javascript - Railsでjavascriptで生成されたhtmlをエスケープする方法は?

私のページの片側には、非常にシンプルなメールフォームがあります。反対側には、提案された電子メールのプレビューがあります。例えば:

ここに画像の説明を入力してください

ユーザーがフィールドに入力したら、キーアップのプレビューを更新したいと思います。私はそれを行うために小さなjs関数を書きました:

Railsが私のHTMLをエスケープして、がらくたのように見せたい場合を除いて、すべてがうまく機能します。

ここに画像の説明を入力してください

通常、これは問題ないことを私は知っています。rawまたはを追加するだけhtml_safeです。しかし、マークアップはキーアップ(またはページの読み込み)に基づいて動的に構築されているため、ここではそれを行うことはできません。私はいくつかの簡単な解決策を逃していますか?回避策のアイデアはありますか?私の唯一のアイデアは、プレビューをiframeにロードすることです。これはまったく奇妙に思えます。

これは途方もなくイライラします。誰か助けてください!

0 投票する
1 に答える
1987 参照

ruby-on-rails - Rails 3コントローラーからビューに返された乱雑な "

Rails 3 アプリ コントローラーには、次のコードがあります。

Rails コンソールでは、きれいに見えます。

私の見解では、 @data_dump オブジェクトがエンコードされます:

この汚れをどうやってきれいにしますか?オブジェクトが端末に表示されるように、オブジェクトをビューに表示したい。前もって感謝します!

0 投票する
2 に答える
936 参照

ruby-on-rails-3 - Rails3の小さなmce表示タグ

tinyMCEのコンテンツを「詳細」列に保存しようとしています。

これで、コンテンツを表示すると、すべての<p>タグタグ<i>などが表示されます。これは、rails3のセキュリティ機能です。

ただし、<p>タグを表示したくないので、HTMLとしてレンダリングしたいと思います。

私が見つけた1つの方法は<%= something.detail.html_safe %>

私が考えたもう1つの方法は、次のようなモデルで関数を作成することでした。

を使用して表示<%= something.detail_safe %>

<%= %>どちらの方法でも、多くの場所でタグを変更する必要があります。より簡単な解決策はありますか?または、すべての場所で手動で変更する必要がありますか?

ありがとうございました。