>  기사  >  백엔드 개발  >  PHP 양식에서 사용자 입력을 확인하고 보안을 강화하는 방법

PHP 양식에서 사용자 입력을 확인하고 보안을 강화하는 방법

WBOY
WBOY원래의
2023-06-24 08:32:511236검색

인터넷이 대중화되면서 점점 더 많은 웹사이트에서 사용자에게 로그인, 등록, 쿼리 및 기타 작업을 요구하며, 이를 위해서는 PHP 양식을 사용해야 합니다. 그러나 PHP 양식을 사용할 때는 보안 문제를 고려해야 합니다. 웹사이트의 보안을 강화하기 위해 사용자가 입력한 내용을 확인해야 합니다. 이 기사에서는 웹사이트 보안을 향상시키기 위해 PHP 양식에서 사용자 입력을 확인하는 방법을 소개합니다.

1. 사용자 입력 데이터 필터링

첫 번째 단계는 사용자 입력 데이터를 필터링하는 것입니다. 사용자 입력 데이터에는 공백, 탭, 캐리지 리턴, 줄 바꿈 등과 같은 불필요한 문자가 많이 있습니다. 이러한 문자로 인해 PHP 스크립트가 실행되지 않거나 공격자가 악용할 수 있습니다. 따라서 이러한 문자를 필터링하려면 PHP의 함수를 사용해야 합니다.

PHP의 Strip_tags() 함수는 HTML 및 PHP 태그를 필터링하고 필터링된 문자열을 반환할 수 있습니다. 예:

$username = strip_tags($_POST['username']); // 过滤掉HTML和PHP标签

PHP의 Trim() 함수는 문자열 양쪽 끝에 있는 초과 공백, 탭, 캐리지 리턴 및 줄 바꿈을 필터링할 수 있습니다. 예:

$username = trim($_POST['username']); // 过滤掉两端空格、制表符、回车和换行符

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 인젝션 공격 방지

세 번째 단계는 SQL 인젝션 공격 방지입니다. SQL 주입 공격은 일반적인 공격 방법입니다. 공격자는 SQL 문에 악성 코드를 주입하여 데이터베이스를 손상시키거나 데이터를 훔칠 수도 있습니다. 따라서 PHP 양식에서는 사용자가 입력한 데이터를 필터링하기 위해 일부 기능을 사용해야 합니다.

PHP의 mysqli_real_escape_string() 함수는 SQL 주입 공격을 방지하기 위해 사용자가 입력한 문자열에서 작은따옴표, 큰따옴표, 백슬래시와 같은 특수 문자를 이스케이프할 수 있습니다. 예:

$username = mysqli_real_escape_string($conn, $_POST['username']); // 过滤掉单引号、双引号、反斜线等特殊字符

4. 인증 코드 사용

마지막으로 악의적인 공격을 방지하기 위해 인증 코드를 사용할 수 있습니다. 인증코드는 로봇이나 악성 프로그램이 웹사이트를 악의적으로 공격하는 것을 방지할 수 있는 인간-기계 식별 기술입니다. 사용자 입력을 확인하기 위해 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 양식을 사용할 때 보안 문제에 주의하고 웹사이트 프로그램을 적시에 업데이트하여 해커 공격을 방지해야 합니다.

위 내용은 PHP 양식에서 사용자 입력을 확인하고 보안을 강화하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.