5

姓名のフィールドを持つフォームがあります。アンダースコアを許可するように求められました。アンダースコアを使用するSQLインジェクションについては知りませんが、名前にアンダースコアが含まれている人も知りません。名前にアンダースコアを許可する、または許可しない正当な理由はありますか?

編集: パラメータとサーバー側の検証を使用しています。これは、jQuery 検証プラグインを介したクライアント側の検証用です。

編集 2: これは、検証を行うべきかどうかについての議論になることを意図したものではありません...アイルランド人やハイフンを受け入れる必要があるように、アンダースコアを受け入れる説得力のある理由があるかどうかを知りたかっただけです。 . それに基づいて、私はオレンの答えを受け入れています.

4

6 に答える 6

15

名前として何を許可するかについては、可能な限り自由にすべきです。アンダースコアを禁止する正当な理由はありません。実際の名前を許可しないソフトウェアを利用しようとする人々の恐ろしい話がたくさんあります。Falsehoods Programmers Believe About Namesを参照して、作成してはならない仮定を確認してください。

于 2010-07-23T14:23:00.627 に答える
12

ホワイトリストを使用して SQL インジェクションを防止しないでください。

あなたはO'Neillまだ出会ったことがありますか?

代わりに、パラメーターを使用してください。

ただし、ブラックリストよりもホワイトリストの方がうまく機能することは認めます


Re:編集:
そのような検証はまったく行うべきではありません。
サーバー側のコードで処理できる場合、 name に問題はありません--'!@--_
サーバー側のコードで処理できない場合、 .

于 2010-07-23T14:20:32.033 に答える
3

検証を間違っています。SQL インジェクションを防ぐ場合は、プレースホルダーまたはデータベース ライブラリのエスケープ関数を使用してデータをエスケープします。その場合、名前に使用する文字は関係ありません。

于 2010-07-23T14:21:41.920 に答える
2

アポストロフィとハイフンを許可する必要があります (O'Reilly、Double-Barrel)。ただし、名前にアンダースコアが含まれていることは聞いたことがありません。

于 2010-07-23T14:22:13.733 に答える
1

If you prevent underscores with the assumption that we are not aware of names with underscores, would you do the same for the other dozens (hundreds) of other "special characters"?

Unless there is some reason to block underscores, I would leave it up to the user to be able to enter their name as they want.

于 2010-07-23T15:47:45.803 に答える
1

理想的には、パラメーター化されたクエリなどを使用しているため、任意の文字を許可し、SQL インジェクションの問題が発生しないようにする必要があります。

許可しません'か?オライリー氏はそれをどのように気に入っていると思いますか?

于 2010-07-23T14:21:56.037 に答える