質問

今作に取り掛かる前にcssプロパティの問題と正規表現を使用していた人です。

$rexName = '/^[a-z' -]$/i';

例えば、ユーザーの名Jürgenを希望す。やBöb?ことになるか当たり前です。ある特殊な表記です。

編集:,投げつけたのJürgen名に対してregex ーで分割の単語には,文字...

http://www.txt2re.com/index.php3?s=J%FCrgen+Blalock&submit=Show+Matches

EDIT2:Allright、チェックのための具体的なものは、なぜ使用しないでregexるだけでチェックのための不正な文字?

$rexSafety = "/^[^<,\"@/{}()*$%?=>:|;#]*$/i";

(現在の中から、最もあてはまるものこれらの実際に使用できる任意のハッキングの試み?)

を備えています。この"、"兆しが必要になり;それを動作させるためにアプリケーションでは、停止いたします。その他の文字を一般に使用されているHTMLの入射SQLインジェクションの攻撃をしているところ欠?

役に立ちましたか?

解決

僕は言う:いや検証の氏名:一日はどのようなコードを満た名前のことを考える"間違った"...また、どのように出てくると思い反応に対応したアプリケーションうた"お名前は有効ではありません" ?

によって何かを達成していきたいと思い、性を高めることが考えられますが、何らかのブラックリスト/フィルを含みますし、いかなる名称"すものについてでも、電話使用予定を聞か"悪名"パスが、少なくとも、でんを防止既存の名前からのアクセスします。

ここではいくつかの例を示しますのルールがちです:

  • せん番号
  • 特別な文字は、 "~{()}@^$%?;:/*§£ø その一部その他
  • なる3す。
  • なしの"admin","支援""モデレーター"、"テスト"、その他の明らかな無名の人が利用しなかった場合にしたい種類をリアル名---
    • (でも、たくないとお考えの場合はお名前、まだなかった場合にも禁止してからの入力の一部のランダムな文様での使用実名---ないそ)

ああ、これは完全というわけではありません;やりましょういくつかの非名前をお渡---があるんじゃないでしょうかは自由応募によっ誰か"があなたの名前間違った" (但し、主張す^^)


と、応答コメントす左下に一つの答え:

うことができるのかを禁じのコマンド 文字のSQLインジェクション、クロスサイト-スクリプティング 攻撃

約SQLインジェクションは、脱出のデータ送信前に、従来から知られていたデータベース;を行う場合には、常に逃がすデータ(!), いつユーザが入力しない:そのまま逃げ、いつもありませんリスクがあります。

同報クロスサイト-スクリプティング:として常に逃がすデータがouputtingです!), ありませんリスクの射出;-)


編集: だがregexいますので、動作しないもの:

次のコード:

$rexSafety = "/^[^<,\"@/{}()*$%?=>:|;#]*$/i";
if (preg_match($rexSafety, 'martin')) {
    var_dump('bad name');
} else {
    var_dump('ok');
}

まだ少なくとも警告:

Warning: preg_match() [function.preg-match]: Unknown modifier '{'

必ず脱出の少なくとも一部の特殊文字を含;ように掘り込 PCREパターン 詳しい情報の (あなたが本当に多くを知るPCRE/regex;とんについて説明できるのですべて)

場を実際に確認したいない文字は指定のデータをするようにする:

$rexSafety = "/[\^<,\"@\/\{\}\(\)\*\$%\?=>:\|;#]+/i";
if (preg_match($rexSafety, 'martin')) {
    var_dump('bad name');
} else {
    var_dump('ok');
}

(これには、迅速、汚れた提案をするものはなにもないと考えて!)

ここには"OK" でも、私は確認コードが正希望、自分の名前でもok!)
同一の例も示文字数のように、この:

$rexSafety = "/[\^<,\"@\/\{\}\(\)\*\$%\?=>:\|;#]+/i";
if (preg_match($rexSafety, 'ma{rtin')) {
    var_dump('bad name');
} else {
    var_dump('ok');
}

と言うことになると"悪"

ご了承くださいしていま ない たこと、それだけではないと見ます。用途では使用しないでくださいサイトのいない場合の試験では非常に厳選!


また、単一引用符を使う時になっているSQLインジェクション...ものであろうキャラクターは法律の一部名---そして、僕らのように一部を除く文字がない十;-)

他のヒント

のサポート<のhref = "rel="noreferrer">のhttp:/ /docs.php.net/manual/en/regexp.reference.php#regexp.reference.unicode」のrel = 『noreferrer』>というスパンのUnicode文字プロパティの文字の大きなセット。だから、\p{L}の組み合わせ(文字の文字)、\p{P}(句読点)と\p{Zs}(スペース区切り文字)を使用することができます:

/^[\p{L}\p{P}\p{Zs}]+$/

しかし、そこにはいくつかのあなたが許可されないようにすることを含めることかもしれないが。

これらの文字カテゴリでカバーされていない文字があるかもしれません

だから私は本当の人の名前のような値のように漠然とした範囲と基準に正規表現を使用しないことをあなたにアドバイスます。

<時間>

あなたの質問を編集し、今あなただけの特定のコードインジェクション攻撃を防ぐためにしたいことを見るように編集:あなたはより良い潜在的な攻撃の試みとして、それらを拒否するのではなく、それらの文字をエスケープする必要があります。

mysql_real_escape_string に使用するか、<のhref = "http://docs.php.net/manual/エン/ pdo.prepared-statements.php」のrel = "noreferrer">プリペアドステートメントは、SQLクエリ、 htmlspecialcharsためをHTML出力や他の言語のための他の適切な機能のためにを。

ことになる問題や一般的。このことがまんできるのか予測す文字、名前に含む可能性のある.最も優れて、ソリューションを指定する負の文字がマスクを除外する一部の特殊文字までにない上げられています。

これまでの使用:

$regexp="/^[^<put unwanted="" characters="" here="">]+$/

あなたがPHPで離れて人間の名前を解析しようとしている場合、私は<のhref =「http://jonathonhill.net/2009-10-31/human-name-parsing-in-php/」のrelをrecomment = "nofollowをnoreferrer">キース・ベックマンのnameparse.phpスクリプトでます。

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