5

たとえば、Javascript を利用したフォーム作成ツールがあります。リンクを使用して要素の html ブロッ​​ク (入力フィールドなど) を追加し、TinyMCE を使用してテキストを編集します。これらは、特定のイベントでバックグラウンドで AJAX 呼び出しを行う自動保存機能を介して保存されます。

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

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

最初に頭に浮かぶのは、受信した html コードからインライン JavaScript を検索して削除する必要があるということです。

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

4

3 に答える 3

5

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

クライアントから HTML を受け入れることは問題ありませんが、サーバー側で PHP を使用して適切に検証およびサニタイズするようにしてください。

于 2012-04-26T08:28:18.480 に答える
1

完全な inline-html をデータベースに保存していますか? その場合は、すべてを作り直して、必要なデータのみをバックエンドに保存してください。期待どおりに受信された場合は、すべてのフィールドも制御する必要があります。

すべての inline-js は簡単に削除できます。

ユーザーを信頼することはできません。

于 2012-04-26T08:28:20.040 に答える
1

もちろん、安全にするための措置を講じない限り、絶対に安全ではありません。StackOverflow では、ユーザーが悪意のある操作を実行できないようにフィルター処理された特定のタグを使用できます。間違いなく似たようなことをする必要があります。

スクリプトをブロックしているかどうかに関係なく、すべての人が入力をサニタイズできるように、入力サーバー側でサニタイズすることを選択します。次のようなものを使用します: http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-from-HTML-code.htmlまたはhttp://grom.zeminvaders.net/html -AJAXで実装されたサニタイザーはかなり良い解決策になるでしょう

于 2012-04-26T08:29:28.323 に答える