PHP フォームでのユーザー入力を検証し、セキュリティを向上させる方法

WBOY
リリース: 2023-06-24 09:36:01
オリジナル
1250 人が閲覧しました

インターネットの普及に伴い、ユーザーがログイン、登録、クエリなどの操作を行う必要がある Web サイトが増えており、そのためには PHP フォームを使用する必要があります。ただし、PHP フォームを使用する場合は、セキュリティの問題を考慮する必要があります。ウェブサイトのセキュリティを向上させるために、ユーザーが入力した内容を検証する必要があります。この記事では、Web サイトのセキュリティを向上させるために、PHP フォームでのユーザー入力を検証する方法を紹介します。

1. ユーザー入力データのフィルター

最初のステップは、ユーザー入力データをフィルターすることです。ユーザー入力データには、スペース、タブ、キャリッジ リターン、ライン フィードなどの不要な文字が多数あります。これらの文字により、PHP スクリプトの実行が失敗したり、攻撃者に悪用される可能性があります。したがって、PHP の関数を使用してこれらの文字をフィルタリングする必要があります。

PHP のstrip_tags() 関数は、HTML タグと PHP タグをフィルターで除外し、フィルターされた文字列を返すことができます。例:

$username = strip_tags($_POST['username']); // 过滤掉HTML和PHP标签
ログイン後にコピー

PHP の Trim() 関数は、文字列の両端にある余分なスペース、タブ、キャリッジ リターン、ライン フィードをフィルタリングして除外できます。例:

$username = trim($_POST['username']); // 过滤掉两端空格、制表符、回车和换行符
ログイン後にコピー

2. ユーザー入力データの検証

2 番目のステップは、ユーザー入力データを検証することです。 PHP では正規表現を使用して、ユーザーが入力したデータを検証できます。正規表現は文字列を照合するために使用される表現であり、ユーザーが入力したデータが要件を満たしているかどうかを確認するために使用できます。

携帯電話番号の確認:

$phone = $_POST['phone'];
if(!preg_match('/^1[3|4|5|7|8][0-9]{9}$/', $phone)){ // 使用正则表达式进行校验
    echo '手机号码格式不正确';
}
ログイン後にコピー

メール アドレスの確認:

$email = $_POST['email'];
if(!preg_match('/^[a-zA-Z0-9]+@[a-zA-Z0-9]+.[a-zA-Z]+$/', $email)){ // 使用正则表达式进行校验
    echo '邮箱格式不正确';
}
ログイン後にコピー

3. SQL インジェクション攻撃の防止

3 番目のステップは、SQL インジェクション攻撃の防止です。 。 SQL インジェクション攻撃は一般的な攻撃手法であり、攻撃者は SQL ステートメントに悪意のあるコードを挿入することでデータベースに損害を与えたり、データを盗んだりする可能性があります。したがって、PHP フォームでは、ユーザーが入力したデータをフィルターするためにいくつかの関数を使用する必要があります。

PHP の mysqli_real_escape_string() 関数は、SQL インジェクション攻撃を回避するために、ユーザーが入力した文字列内の単一引用符、二重引用符、バックスラッシュなどの特殊文字をエスケープできます。例:

$username = mysqli_real_escape_string($conn, $_POST['username']); // 过滤掉单引号、双引号、反斜线等特殊字符
ログイン後にコピー

4. 確認コードを使用する

最後に、悪意のある攻撃を防ぐために、確認コードを使用できます。検証コードは、ロボットや悪意のあるプログラムによる Web サイトへの悪意のある攻撃を防ぐことができる人間と機械の識別技術です。 PHP フォームに検証コード機能を追加して、ユーザー入力を検証できます。

PHP 検証コード生成機能:

$code = '';
for($i = 0; $i < 4; $i++){
    $code .= rand(0, 9); // 生成四位随机验证码
}
$img = imagecreatetruecolor(80, 30); // 创建图片
$bg_color = imagecolorallocate($img, 255, 255, 255); // 设置背景颜色
$font_color = imagecolorallocate($img, 0, 0, 0); // 设置字体颜色
imagefill($img, 0, 0, $bg_color); // 填充背景颜色
imagettftext($img, 18, 0, 10, 20, $font_color, 'arial.ttf', $code); // 添加文本
header('Content-Type:image/png'); // 设置图像类型
imagepng($img); // 输出图像
imagedestroy($img); // 销毁图片
ログイン後にコピー

PHP 検証コード検証:

$code = $_POST['code'];
if($code != $_SESSION['code']){ // 判断验证码是否匹配
    echo '验证码不正确';
}
ログイン後にコピー

概要:

ユーザー入力データをフィルタリングし、ユーザー入力データを検証することで、 SQL インジェクション攻撃を防止し、検証コードやその他の手段を使用することで、PHP フォームのセキュリティを比較的高いレベルに向上させることができます。 PHP フォームを使用する場合は、セキュリティの問題に注意し、ハッカーの攻撃を防ぐために Web サイトのプログラムを適時に更新する必要があります。

以上がPHP フォームでのユーザー入力を検証し、セキュリティを向上させる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート