1

HTMLタグを使用してテキストをプレビューし、そのテキストをデータベースに保存する機能が必要です。XSSのセキュリティ上の理由から、データベースでHTMLを許可するのは良い考えではないことを私は知っています。これを達成する方法は何ですか?

私は、ソースコードをフォーマットできる、stackoverflowにあるものと同様の機能が必要です。ありがとう。

4

2 に答える 2

6

推奨される方法:

htmlページのフォームのjavascriptイベントリスナーを作成します。ajaxを介して入力をrailsアプリに送信します。ここで、入力がレンダリングされます(たとえば、後でデータベースからの出力をレンダリングするのと同じヘルパーによって)。

XSSを回避するには、 RedCloth/Textileなどのマークアップ言語を使用してください。また、ユーザーが入力/理解するのも簡単です。

あなたの要求された方法:

javascriptイベントリスナーを作成し、フォーム/入力の内容を別のdivに書き込みます。

必要なJavaScriptは、使用するライブラリ(PrototypeやjQueryなど)によって異なります。

例:

textarea 、、、<textarea id="text"></textarea>およびpreview area divを持つフォームがあり、 <div id="preview"></div>Prototypeを使用しているとします。

document.observe("dom:loaded", function() {
  new Form.Element.Observer('text', 0.25, 
    function () {
      $('preview').update($F('text'));
    }
  );
}

これにより、250ミリ秒ごとにテキストエリアの変更がチェックされ、その入力がプレビューdivにコピーされます。

実際には、で呼び出される関数内のコードが必要ですdocument.observe(で始まりnew Form.Element.Observer...ます。document.observeブラウザがDOMツリーの構築を完了した後にこのコードを呼び出します。

于 2011-03-29T16:42:42.053 に答える
1

プレーンテキストでHTMLマークアップを実現する方法である、テキスタイルやマークダウンなどの使用を検討することもできます。

于 2011-03-29T17:20:25.163 に答える