私は、PHPの初心者で、コンタクトフォームでヘッダインジェクションを停止するための検証を設定しようとしています。私は多くのチュートリアルを読んだことがありますが、検証する必要があるフォームを作ったが、それは動作していません...ここで少し研究した後、私が使用しているコードはpreg_matchでなければならないeregi(旧チュートリアル)最近。 preg_matchを使用して電子メールアドレスの形式を検証しましたが、改行、CC、BCCなどがどこにも存在しないことを確認したいと思います。preg_match PHPフォームへの注入を防止する
if(preg_match("/to:/i",$field)
// and so on for each string I want to catch
を私はここに読んだことがある:私はちょうどそのようにするpreg_matchでeregiを置き換えることができれば、私はわからないんだけど、今
function spamcheck($field) {
if(eregi("to:",$field) || eregi("cc:",$field) || eregi("Content-Type:",$field) || eregi("bcc:",$field) || eregi("%0D",$field) || eregi("\r",$field) || eregi("\n",$field) || eregi("%0A",$field)){
$possiblespam = TRUE;
}else $possiblespam = FALSE;
if ($possiblespam) {
die("Possible spam attempt detected. If this is not the case, please edit the content of the contact form and try again.");
return 1;
}
}
: これは私が今持っている機能ですpreg_matchにはデリミタが必要ですが、私が正しく使用したかどうかは分かりません。また、大文字と小文字を区別する必要があるので、iフラグを追加しました(自信なし)。それでも、上記のことが実際に正しいかどうかについての実際の考えはありません。それは安全と思われますか? PHPの知識が不足していることについて再度お詫び申し上げます。この種の関数は、オンラインチュートリアルではかなり一般的ですが、preg_matchではなくeregiを使用しています。