2012-04-26 8 views
5

たとえば、私はJavascript-poweredフォーム作成ツールを持っています。リンクを使用して要素のHTMLブロック(入力フィールドなど)とTinyMCEを追加してテキストを編集します。これらは、特定のイベントのバックグラウンドでAJAX呼び出しを行うオートセーブ機能によって保存されます。JavaScriptを使用したユーザーHTMLの編集と保存 - どれくらい安全ですか?

呼び出されるsave関数はデータベース保護を行いますが、ユーザーが希望するもの(カスタムHTMLや不要なスクリプトなど)を追加するためにDOMを操作できるかどうかは疑問です。

これはどれくらい安全ですか?

最初に気になるのは、受信したHTMLコードからインラインJavaScriptを検索して削除する必要があることです。

PHP、JQuery、Ajaxを使用しています。

+0

すべての回答は正しいようですが、私はコミュニティのアップヴォーテットを最高のものにします。皆さんありがとう! –

答えて

5

全く安全ではありません。 は、クライアントを信用しないことができます。初心者でもクライアント側のDOMを変更することは簡単です(たとえばFirebug for Firefoxをインストールするだけです)。

クライアントからHTMLを受け入れても問題ありませんが、サーバ側でPHPを使って適切に検証し、サニタイズしてください。

+0

ユーザー入力HTMLをサニタイズする必要がある場合、これはかなり良いライブラリです:http://htmlpurifier.org/ – CD001

1

データベースに完全なinline-htmlを保存していますか? もしそうなら、すべてをリメイクし、バックエンドに固有データを保存してください。 ALLフィールドは、予期される方法で受信された場合にも制御する必要があります。

すべてのインラインjは簡単に削除されます。

を信頼してください!

1

もちろん安全であるように措置を講じない限り、絶対に安全ではありません。 StackOverflowは、ユーザーが悪意のある行為をすることができないようにフィルタリングされた特定のタグを許可します。あなたは確かに似たようなことをする必要があります。

私は、スクリプトをブロックしたかどうかにかかわらず、誰もが自分の入力を消毒するように入力サーバー側をサニタイズすることを選択します。このようなものを使用すると、http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-from-HTML-code.htmlまたはhttp://grom.zeminvaders.net/html-sanitizerがAJAXで実装されていれば、かなり良い解決策になります。

+0

+1 –

関連する問題