1

更新:前に何を話しているのかよくわからなかったので編集しました。

サーバー側スクリプトに送信するフォームがあります。サーバー側スクリプトは、そのデータを使用して Web サービスの XML 出力を生成します。データに無効な文字 (「XML では許可されていない」ことを意味すると思いますが、エンコーディングに関係している可能性があります) がある場合、XML は鳴き声を上げます。Word文書などを切り貼りしてフォームに入力するユーザーが多いため、エラーが多発しています。

データを消費したり XML に変換したりするサーバー側のスクリプトを変更できない (サーバーにアクセスできない) ため、サーバー側のデータをサニタイズできません。サーバー側のサニタイズを追加できるようになるまで、少なくとも問題を軽減するために、JavaScript を使用してフォームの送信を傍受し、すべてのテキスト入力と「悪い」文字のテキスト領域をスクラブしたいと思います。

私はフォームをループする方法を知っており、それを処理するために thisString.replace() に正規表現をスローしたいと思っています。

私が知らないのは、(a)正規表現で.replace()を使用することが正しい方法であるかどうか、そしてそうであれば、(b)正規表現に実際に何を入れるべきかです。XML 出力を壊さずに、できるだけ多くの文字を許可したいと考えています。

ありがとう。

4

1 に答える 1

2

一般に、ブラウザーは、http ヘッダーでエンコーディングを utf-8 に設定している限り、コピーペーストされた場所に関係なく、データを UTF-8 として送信します。Content-Type: text/html; charset=utf-8

もちろん、IEにはいくつかの例外があります。

また、非 UTF8 文字というものはありません。ブラウザは、Windows-1252 などの互換性のない utf-8 エンコーディングでフォームをエンコードすることを意味します。

文字をASCII文字に制限することを除いて、JavaScriptでできることは何もありませんが、それは通常のユーザー以外は何も妨げません。エンコーディング攻撃の場合は、とにかくサーバー側でエンコーディングを常にチェックする必要があります。

于 2012-12-10T16:34:13.313 に答える