2009-05-01 15 views
2

私は現在、ウェブサイトの管理セクションで作業しています。管理者は、Infragistics WebHtmlEditorツールを使用して、読み込み時にページに読み込まれるページのマークアップを作成できます。WebリッチテキストエディタでHTMLマークアップを保存していますか?

このマークアップをデータベースに保存するには、どのような方法が最適ですか? WebHtmlEditorで生成されたHTMLをvarcharフィールドに保存するだけですか?これに問題はありますか?マークアップが失われるか、DBに問題が発生しますか?

ありがとうございました

答えて

2

データベースに直接保存してください。タイプと長さを意識してください。 nvarchar(max)列である必要があります。コントロールからの値を収集してからDBに渡すまでの間にnay変換を行っていないと仮定すると、マークアップは失われません。

+0

ntextの代わりにnvarchar(max)と言ってうれしいです。 – DForck42

+1

なぜvarcharをnvarcharで使用する必要がありますか? – Fermin

1

HTMLとSQLに問題はありません。選択/挿入の前にエスケープしてエスケープしてください。

0

データベースは、与えられた生データを格納します。その時点から何もする必要はありません.HTMLとそのvarcharフィールドに格納されているすべてをHTMLページに出力するだけで、正常に動作します。

mysql_real_escape_string();を呼び出してください。 WebHtmlEditorの出力のポスト値をデータベースに格納する前に、SQLクエリのエラーをスローしないようにするために、WebHtmlEditorの出力のポスト値(または、それに相当する言語)をデータベースに格納します。

+0

だけでなく、それは実際のSQLServerのタグが付けられています。 –

3

SQLは問題ありませんが、管理者がWordから貼り付けることができる場合は、マークアップを保存してから保存する必要があります。私はWebHtmlEditorを知らないが、あなたは簡単にテストすることができます:Wordから貼り付けが

style="mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; 
    mso-fareast-language: EN-US; mso-bidi-language: AR-SA; 
    mso-bidi-font-family: 'Times New Roman'; mso-highlight: yellow" 

または

<p class="MsoNormal"> .. </p><o.p></o.p> 

または追加<span><div>タグの多くのようなものが得られた場合、あなたはしたいと思いますマークアップを保存する前にクリーンアップしてください。おそらく、いくつかのオンラインデモを使ってテストし、エディタ内のHTMLの表示ボタンをクリックすることもできますが、エディタが保存時にクリーンアップするかどうかはわかりません。

ブラウザはWordの貼り付けとは異なる応答をするため、WebHtmlEditorを使用してクリーンアップを行う場合は、いくつかの異なるブラウザを使用してテストする必要があります。

リッチテキストエディタの中には、「Wordからの貼り付け」という特別なボタンがありますが、実際には「通常のテキストとして貼り付ける」機能があります。その後、管理者は使用を中止する可能性があります。単にその使用を忘れるかもしれないので、そのようなボタンが存在していてもクリーンアップが必要です。)

1

保存するHTMLのサイズと文字エンコーディングによって異なります。

このポストはタグが付けられたSQL Serverであるため、現在のVARCHAR(MAX)は8000文字です。

それ以上の場合は、TEXTタイプを使用できます。

TEXTフィールドを持つカバレッジには、LIKEでクエリを使用する機能、UNION、レプリケーションでの問題などが制限されているためです。

、あなたはまた、UnicodeのタイプNVARCHARとNTEXTを考慮することができるが、このコンテンツのいずれかの場合、彼らは1

するのではなく、文字ごとに2つのバイトを使用しているため、これらはVARCHARとTEXTの倍のストレージを取る高度なキャラクタセットが必要な場合ユーザからの入力を受け入れると、XSS注入攻撃には非常に注意する必要があります。

VARCHAR:http://msdn.microsoft.com/en-us/library/aa258242(SQL.80).aspx TEXT:http://msdn.microsoft.com/en-us/library/aa260619(SQL.80).aspx

XSS攻撃:http://en.wikipedia.org/wiki/Cross-site_scripting

関連する問題