2

したがって、HTML5 によってクライアント側でローカル SQL データベースが提供されるため、選択または挿入を記述したい場合$buddski = mysql_real_escape_string($tuddski)、PHP パーサーと MySQL ブリッジが遠く離れているため、第三者の入力をサニタイズすることができなくなります。これは、クエリを作成し、JavaScript で結果を解析する、まったく新しい SQLite の世界です。

しかし、サイト全体のデータベースがダウンすることはないかもしれませんが、悪意のあるインジェクション攻撃によってデータベースが破損または消去されたユーザーは、かなり動揺するでしょう。

では、純粋な JavaScript で、入力をエスケープ/サニタイズして、ユーザーの組み込みデータベースに大損害を与えないようにする最善の方法は何ですか?

スクリプトレット? 仕様? 誰?

4

5 に答える 5

6

計算をすべてクライアントに任せたら、ゲームオーバーです。スクリプトが防弾であっても、ユーザーは独自のスクリプトをローカルにロードできます (無害な例については、GreaseMonkey を参照してください)。スクリプトをバイパスして、自分でクライアント側のデータベースにアクセスします。

私の意見では、信頼されていないクライアント (つまり、ほぼすべてのクライアント) を使用したクライアント側データベースの唯一の有用なアプリケーションは、メインのサーバー側データベースの一部をミラーリング/キャッシュすることです。これにより、クライアントはプルする必要がなくなります。繰り返し要求されたネットワーク経由のデータ (そのようなクライアント側のデータベースが破損した場合は、それを無効にして、サーバーからデータを再度ロードします)。

于 2010-04-30T08:48:53.547 に答える
2

HTML5 とローカル データベースについてはよくわかりませんが、サーバー側では、エスケープするよりもプリペアド ステートメントを使用する方が適切です。クライアント側のデータベースも同じだと思います。

于 2010-04-30T08:11:44.727 に答える
1

準備済みステートメントを使用します。

http://dev.w3.org/html5/webdatabase/#sql-injection

于 2010-05-02T01:10:28.990 に答える
0

私は、システムを攻撃に対して脆弱なままにするjavascriptの入力をサニタイズしたとしても. また、javascript に入力サニタイザーを配置し、php ファイルに別のサニタイザーを配置すると冗長になります。

于 2010-04-30T08:56:57.303 に答える
0

Caja ディストリビューションの一部として入手できる Google の JavaScript Html Sanitizer を使用します: http://code.google.com/p/google-caja/

このライブラリは、クライアント側とサーバー側の両方で使用できます。私は、ASP JScript ホストの下でライブラリを実行している従来の ASP プロジェクトで、サーバー側で使用しています。

于 2010-04-30T10:31:48.017 に答える