質問

私はいくつかのHTMLフォームを持っています、そして、私はサーバー側にこれらのフィールドのフィルタリングを実装しています(Javaサーブレットを使用)。電子メールアドレスについては、これに一致するものを削除します。

[^A-Za-z0-9._%-@]

名前、メッセージ、電話番号のフィールドに適用できるいくつかの同様のルールは何ですか。

私は<and>が<and>として逃げるべきだと思っています、私は他に何を交換すべきですか?

これらの線に沿って、そのようなフィールドに許可されている最大長さに関する推奨事項はありますか?

役に立ちましたか?

解決

あなたは逃げる必要があります &&amp; まず <&lt;. 。一般的な信念に反して、それはそうです 必要はありません 脱出する >&gt;. 。ブラケットを保護する必要はありません 閉じます 方法がない場合はHTMLタグ 開いた 1。

データベースに書き込まれる前に逃げるべきかどうか、または毎回データベースから読んでいるときにそれを行うべきかどうかについてのあなたの呼びかけ。入力側でそれを行うと、より速くなります。出力側でそれを行うことは、より安全になり、常に他のアプリと交換するデータを作成します。 unescape 別のアプリに送信する前のもの。私は個人的には、出力側でパフォーマンス価格と無効化を支払います。キャッシュが役立ちます。

あなたがしたい残りの検証は、データの種類によって異なります。電子メールアドレスについては、 @ そして少なくとも1つ . その後、有効かどうかを気にする場合は、アドレスにテスト電子メールを送信します。それよりもはるかにさらに電子メールアドレスを完全に検証することは不可能であり、アドレスが構文的に有効であっても、それが配信できることを意味するものではありません。同様に、ほとんど何でもURLとして許可し、次に それを取得してみてください 有効かどうかを確認します。請求/配送先住所の場合、USPS Webサービスを使用して、最適な形式でデータを検証および取得します(米国のアドレス向け)。

他のヒント

名前のために何でも許可する必要があります。 「O'Malley」または「Hudson-Walker」を検討してください。一部の言語(Salishなど)には数字が含まれているため、「sqwxwu7mish」を持つことができます。それから、ヘブライ語、キリル語、ギリシャ語、中国語、韓国語、そして以前はプリンスとして知られていたミュージシャンさえ、アクセントのあるキャラクターがいます。

メッセージテキストも同様に制約されていないはずです。メッセージにHTMLを含めることができる場合、HTML(実際のHTMLパーサーを使用)を解析し、タグと属性のホワイトリストを適用して、期待しているもののみを許可する必要があります。

電話番号は、無料のフォームにもかなり近いはずです。北米の形式はヨーロッパの形式とは異なり、「(555)555-5555」と言う人もいれば、「555-555-5555」のような人もいれば、一部の電話番号には延長があり、そうでない人もいます。

入力で心配する必要がある唯一のエンコードは、すべてがUTF-8(データベースを含む)にあることです。また、データベースと話をするときは、自分で何もエンコードしようとしないでください。データベースドライバーの引用メカニズムとプレースホルダーを使用してください。

通常、長さは、合理的な最大値で最初の推測を2倍に(少なくとも)2倍にする必要があるよりもはるかに大きくなければなりません。名前と100の20文字のストレージの違いは、ほとんどのアプリケーションにとって重要ではないので、寛大にしてください。

HTMLが出力までエンコードすることを心配する必要はありません。その後、環境がサポートするHTMLおよびURLエンコードツールを使用する必要があります。独自のものを構築しようとしないでください。

あなたの入力を過度に構成しないでください、可能な限りゆるく寛容になりましょう。ただし、出力には非常に厳格になります。

最大長:私は常に、クライアント側とサーバー側のフィールドに最大長を適用します。値は、データベースに設定された最大値と一致します。

私は逃げる<、>と>、<に同意します。

非常に良い検証をすることは良い習慣だと思います。名前、メッセージ、電話番号のフィールドを使用している場合は、次のことを行います。

テキストボックスごとに、テキストボックスが無効な値をまったく取らないようにします。
名前:AA-ZZ
メッセージ:「aa-zz」 '0-9' '。' '、' ';'等..
電話番号: '0-9'スペースを許可しないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top