>  기사  >  백엔드 개발  >  보안 조치를 강화하기 위해 PHP 형식으로 만료 시간을 설정하는 방법

보안 조치를 강화하기 위해 PHP 형식으로 만료 시간을 설정하는 방법

WBOY
WBOY원래의
2023-06-24 09:21:101480검색

PHP 양식은 웹 사이트 개발에서 일반적으로 사용되는 대화형 방법으로 사용자 입력을 받고 처리를 위해 데이터를 서버 측에 전달할 수 있습니다. 그러나 양식 데이터는 HTTP를 통해 전송되므로 특정 보안 위험이 있습니다. 그 중 하나는 악의적인 공격자가 재생 공격을 사용하여 데이터 변조 또는 위장 공격을 수행하기 쉽다는 것입니다. 이러한 공격을 방지하기 위해 PHP 형식으로 만료 시간을 설정하고 보안 조치를 강화할 수 있습니다. 이 기사에서는 보안 보호를 강화하기 위해 PHP 양식에서 만료 시간을 설정하는 방법을 소개합니다.

  1. 만료 시간이란 무엇입니까

만료 시간은 양식을 제출하기 전에 시간 제한을 설정하는 것을 의미합니다. 지정된 시간 내에 양식을 제출하지 않으면 양식이 무효화됩니다. 이 메커니즘은 악의적인 공격자가 재생 공격을 통해 데이터 변조 또는 위장 공격을 수행하기 위해 양식을 사용하는 것을 방지합니다. 동시에 만료 시간은 양식의 유효 기간을 제한하여 쓸모 없는 데이터가 서버 리소스를 차지하는 것을 방지할 수도 있습니다.

  1. 만료 시간 설정 방법

PHP에서 세션 기술을 사용하여 만료 시간을 설정할 수 있습니다. 샘플 코드는 다음과 같습니다.

<?php
session_start();
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    session_unset();
    session_destroy();
}
$_SESSION['LAST_ACTIVITY'] = time();
?>

위 코드의 의미는 현재 시간에서 시간을 뺀 값이라는 것입니다. 마지막 작업의 시간이 1800초(30분)를 초과하면 세션이 삭제됩니다.

  1. 만료 시간을 사용하여 양식 보안을 강화하는 방법

만료 시간을 설정한 후 양식을 제출할 때 양식 데이터도 확인해야 합니다. 예를 들어 SQL을 방지하기 위해 주요 필드에 대해 데이터 확인 및 필터링을 수행할 수 있습니다. 인젝션, XSS 공격, CSRF 공격 등의 보안 위협. 다음은 몇 가지 구체적인 조치입니다.

3.1 데이터 확인

양식 제출 데이터를 수신할 때 PHP의 필터 기능을 사용하여 양식 제출 데이터를 필터링, 확인 및 정리하여 데이터 보안을 향상시킬 수 있습니다. 필터 기능은 데이터 유형, 길이, 대소문자 및 특수 문자를 확인할 수 있습니다.

<?php
// 过滤输入的字符串
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

// 验证电子邮箱格式
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

// 校验输入的 URL
$url = filter_input(INPUT_POST, 'url', FILTER_VALIDATE_URL);

// 验证IP地址
$ip = filter_input(INPUT_POST, 'ip', FILTER_VALIDATE_IP);
?>

3.2 SQL 삽입 방지

양식 데이터가 데이터베이스에 저장되기 전에 매개변수 바인딩 및 문자 이스케이프를 사용할 수 있습니다. SQL 주입을 방지하는 기타 방법. 그 중 매개변수 바인딩은 PDO나 mysqli 라이브러리를 사용할 수 있고, 이스케이프 문자는 addlash와 같은 기능을 사용할 수 있다. 샘플 코드는 다음과 같습니다.

<?php
// 参数绑定防止 SQL 注入
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
$stmt->bindParam(':username', $username);
$stmt->execute();

// 转义字符串防止 SQL 注入
$username = addslashes($_POST['username']);
$password = addslashes($_POST['password']);
?>

3.3 XSS 공격 방지

양식 데이터 출력 시 제출된 데이터를 필터링하여 XSS 공격을 방지할 수 있습니다. PHP의 htmlspecialchars 및 기타 기능을 사용하여 특수 문자를 HTML 이스케이프 문자로 변환할 수 있습니다. 샘플 코드는 다음과 같습니다.

<?php
// 输出转义后的字符串
echo htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
?>

3.4 CSRF 공격 방지

CSRF 공격을 방지하기 위해 양식에 csrf_token을 추가하여 확인할 수 있습니다. 양식의 출처는 합법적입니다. PHP 세션을 사용하여 토큰을 저장할 수 있습니다. 샘플 코드는 다음과 같습니다.

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $csrf_token = $_POST['csrf_token'];
    if (!isset($_SESSION['csrf_token']) || $_SESSION['csrf_token'] !== $csrf_token) {
        die('非法请求');
    }
}
$csrf_token = md5(uniqid(rand(), true));
$_SESSION['csrf_token'] = $csrf_token;
?>
<form method="post">
    <input type="hidden" name="csrf_token" value="<?php echo $csrf_token;?>">
    <input type="text" name="username">
    <input type="password" name="password">
    <button>提交</button>
</form>
  1. Summary

PHP 양식의 만료 시간을 설정하면 재생 공격 및 위장 공격을 효과적으로 방지하여 양식 보안을 강화할 수 있습니다. 또한, 데이터 검증을 통해 양식의 보안을 더욱 강화하여 SQL 주입 방지, XSS 공격 방지, CSRF 공격 방지 등을 수행할 수 있습니다. 웹사이트 개발에서는 보안 강화가 중요합니다. 웹사이트의 보안을 향상시키기 위해서는 모든 측면에서 시작해야 합니다.

위 내용은 보안 조치를 강화하기 위해 PHP 형식으로 만료 시간을 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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