2011-08-07 7 views
1

私はテキストエリアを持っていて、ユーザがデータを入力してアップロードを許可するためにはam using ckeditorです。これにより、このデータのhtmlをmysqlデータベーステーブルに保存して別のWebページに表示します。ユーザckeditorのhtmlデータをデータベースに保存するときの妥当性確認

私は人々が投稿しているものに関して何を心配する必要がありますか?彼らは危険なスクリプトなどを投稿していないことを確認するために、フロントエンドまたはバックエンドに検証を追加する必要がありますか? 。

ポストされているものが、後で表示するためにクライアントに保存して戻すのが適切であることを検証する最も簡単な方法は何ですか。

答えて

2

私は、あなたがこのことを心配べきではありません

など、彼らは危険なスクリプトを掲示していないことを を確保するために、フロントエンドまたはバックエンド上の任意の検証を追加する必要があります。リレーショナルデータベースは、SQLインジェクションを避けるためにデータを格納するためにパラメータ化されたクエリを使用する限り、どのような種類のテキストを投げているかはあまり気にしません。

このデータをウェブページに表示しようとすると、問題が発生する可能性があります。この時点で、適切にHTMLエンコードされていることを確認する必要があります。

かみそりの場合

:Webフォーム用

@... 

(ASP.NET 4.0)Webフォーム用

<%: ... 

(前ASP.NET 4.0)

<%= Html.Encode(... 

または全部について上記:

Html.DisplayFor(x => x.SomePropertyOftheViewModel) 

投稿されている内容が、後で表示するためにクライアントに保存して返すことが妥当であることを確認する最も簡単な方法は何ですか。

(リレーショナルデータベースを使用している場合のみ)データを格納するためのパラメータ化されたクエリと、HTMLエンコードを使用して表示を戻します。

またfollowing blog postが便利な場合はMicrosoft Anti-Xss libraryです。

2

私が知っている限り、ckeditorはxss保護機能を備えていません(サーバー側では常にこのようなことを確認する必要があります)。 Darin Dimitrovの回答に加えて、私の最近のプロジェクトでは、ユーザー入力をhtmlで表示する必要があり、エンコードしないと言うことができます。同様の状況に遭遇した場合(ほとんどの場合、ckeditorを使用してフォーマットを無視することはほとんどありません) - http://refactormycode.com/codes/333-sanitize-html これが該当する場合は、それをそのまま表示してください。

関連する問題