현재 위치: > 최신 기사 목록> filter_input ()을 사용하여 crypt ()로 사용자 입력을 처리합니다.

filter_input ()을 사용하여 crypt ()로 사용자 입력을 처리합니다.

M66 2025-05-22

웹 개발에서 사용자 입력은 가장 일반적이고 가장 쉽게 공격 할 수있는 항목입니다. 사용자 입력 처리의 보안을 향상시키기 위해 PHP는 많은 실용적인 기능을 제공하며, 그중 Filter_Input ()Crypt () 는 두 가지 매우 중요한 보안 도구입니다. 이 기사에서는이 두 기능을 조합하여 XSS (크로스 사이트 스크립팅 공격) 및 암호 누출과 같은 일반적인 공격 방법을 효과적으로 방지하는 방법을 소개합니다.

1. Filter_Input () 소개

Filter_Input () 은 PHP의 내장 기능으로, 포스트 또는 GET 데이터와 같은 외부 입력을 가져오고 필터링하는 기능입니다. 악성 데이터가 응용 프로그램 로직 계층에 입력하는 것을 방지하기 위해 사용자가 제출 한 데이터를 효과적으로 전처리 할 수 ​​있습니다. 예를 들어:

 $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);

이 코드 라인의 목적은 게시물 요청에서 사용자 이름 매개 변수를 얻고 HTML 태그 및 특수 문자를 제거하여 크로스 사이트 스크립팅 공격을 방지하는 것입니다.

2. crypt ()의 암호화 기능

사용자 비밀번호를 안전하게 보관하는 것은 개발자가 심각하게 취해야하는 문제입니다. PHP가 제공하는 Crypt () 함수는 다양한 암호화 알고리즘과 Blowfish 알고리즘 ( $ 2y $ 로 시작하는 소금 값으로 식별)의 권장 사용을 지원합니다. 암호화 된 암호는 크랙하기가 어렵고 데이터베이스가 유출 되더라도 공격자는 원래 비밀번호를 쉽게 복원 할 수 없습니다.

예제 사용 :

 $salt = '$2y$10$' . substr(str_replace('+', '.', base64_encode(random_bytes(22))), 0, 22);
$hashedPassword = crypt($password, $salt);

위의 코드에서 Random_Bytes ()는 각 사용자의 암호가 동일하더라도 생성 된 암호 텍스트가 다르기 위해 고강도 랜덤 문자열을 생성하는 데 사용됩니다.

3. 안전성을 향상시키기위한 통합 사용

Filter_Input ()crypt ()를 사용하면 안전한 데이터 처리 프로세스를 설정할 수 있습니다.

  1. 먼저 XSS 및 코드 주입을 방지하기 위해 사용자 입력을 필터링합니다.

  2. 그런 다음 crypt ()를 사용하여 비밀번호를 암호화하고 저장하여 일반 텍스트 비밀번호가 유출되지 않도록합니다.

  3. 마지막으로 암호화 된 비밀번호와 사용자 이름 만 데이터베이스에 저장됩니다.

이 처리 프로세스는 일련의 일반적인 웹 공격을 효과적으로 방지하고 웹 사이트를위한 견고한 보안 기반을 제공 할 수 있습니다.

4. 비밀번호를 확인하는 방법

로그인 할 때는 데이터베이스의 암호화 된 비밀번호와 사용자가 제출 한 암호를 비교하기 위해 Crypt () 만 사용하면됩니다.

 $inputPassword = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
$storedHash = '비밀번호 해시 값 데이터베이스에서 가져온 값';

if (crypt($inputPassword, $storedHash) === $storedHash) {
    echo "비밀번호 확인이 통과되었습니다";
} else {
    echo "오류 비밀번호";
}

이 검증 방법은 안전하고 표준이며 비밀번호를 일반 텍스트로 복원 할 필요는 없습니다.

5. 요약

Filter_Input ()Crypt ()를 결합하여 웹 사이트의 사용자 입력 처리의 보안을 크게 향상시킬 수 있습니다. Filter_Input () 는 악성 입력을 방지하기 위해 필터링을 담당합니다. Crypt ()는 암호 누출을 방지하기 위해 암호화를 담당합니다. 이 두 기능은 보안 로그인 시스템과 사용자 관리 시스템을 구축 할 때 필수적입니다. 개발자는 사용자와 시스템의 안전을 보호하기 위해 이러한 기능을 사용하는 좋은 습관을 개발해야합니다.