PHP 7의 일반적인 보안 취약점은 무엇이며 피하는 방법은 무엇입니까?
PHP 7 및 완화 전략의 일반적인 보안 취약점 : PHP 7의 일반적인 보안 취약점은 여전히 몇 가지 일반적인 보안 취약점을 나타냅니다. 이러한 취약점은 종종 언어 자체의 내재 된 결함보다는 안전하지 않은 코딩 관행에서 비롯됩니다. 다음은 가장 널리 퍼진 것입니다 : SQL Injection : - 신뢰할 수없는 사용자 입력이 적절한 소독없이 SQL 쿼리에 직접 통합 될 때 발생합니다. 공격자는이 입력을 조작하여 임의의 SQL 명령을 실행하여 민감한 데이터에 액세스하거나 데이터베이스 서버를 제어 할 수 있습니다. <:> 완화 : 항상 매개 변수화 된 쿼리 또는 준비된 명령문을 사용하십시오. 사용자 입력을 SQL 쿼리에 직접 연결하지 마십시오. 종종 매개 변수화를 자동으로 처리하는 강력한 ORM (Object-Relational Mapper)을 사용합니다. 크로스 사이트 스크립팅 (XSS) : XSS 취약점을 사용하면 공격자가 다른 사용자가 보는 웹 페이지에 악성 스크립트를 주입 할 수 있습니다. 이 스크립트는 쿠키를 훔치거나 사용자를 피싱 사이트로 리디렉션하거나 웹 사이트를 훼손 할 수 있습니다. <:> 완화 : 웹 페이지에 표시하기 전에 모든 사용자가 제공 한 데이터를 엄격하게 소독합니다. 컨텍스트에 적합한 출력 인코딩 기능 (HTML, JavaScript 등)을 사용하십시오. CSP (Content Security Policy)를 구현하여 브라우저가로드 할 수있는 리소스를 제어하기 위해 컨텐츠 보안 정책 (CSP)을 제어합니다.
- CSRF (Cross-Site Request Prostery) : CSRF는 사용자가 이미 인증 한 웹 사이트에서 원치 않는 작업을 수행하도록 트릭을 공격합니다. 예를 들어, 공격자는 사용자의 지식없이 자금을 이체하기위한 양식을 제출하는 링크를 제작할 수 있습니다. <: :> 완화 : CSRF 토큰 사용. 이들은 각 양식 제출에 대해 생성 된 독특하고 예측할 수없는 값입니다. 서버는 토큰이 제출 된 토큰이 생성 된 것과 일치하여 무단 요청을 방지하는지 확인합니다. CSRF 위험을 추가로 완화하기 위해 쿠키 속성을 사용하십시오. 세션 납치 : 공격자는 사용자의 세션 ID를 훔쳐서 사칭 할 수 있습니다. 이는 세션 관리 시스템의 취약성을 악용하거나 전송 중에 세션 ID를 가로 채는 것과 같은 다양한 방법을 통해 달성 할 수 있습니다. <:> 완화 : 안전하고 예측할 수없는 세션 ID를 사용하십시오. 클라이언트와 서버 간의 통신을 암호화하기 위해 HTTP를 구현하십시오. 세션 ID를 정기적으로 재생합니다. 파일에 의존하기보다는 데이터베이스에서 이상적으로 저장 세션 데이터를 단단히 저장하십시오.
파일 포함 취약점 : - 이러한 취약점을 사용하면 공격자가 서버에 임의의 파일을 포함시켜 잠재적으로 악의적 인 코드를 실행할 수 있습니다. 이는 종종 애플리케이션에 적절한 유효성 검사없이 사용자 입력을 기반으로 파일을 동적으로 포함 할 때 발생합니다. <:> 완화 : 사용자 입력을 기반으로 파일을 포함하여 동적으로 피하십시오. 화이트리스트 접근법을 사용하여 포함 할 파일을 정확하게 지정하십시오. 엄격한 파일 경로 유효성 검증을 구현하십시오RCE (원격 코드 실행) : RCE 취약점을 통해 공격자는 서버에서 임의의 코드를 실행할 수 있습니다. 이것은 종종 SQL 주입 또는 파일 포함과 같은 다른 취약점의 결과입니다. <:> 완화 :
- RCE로 이어질 수있는 근본적인 취약점을 해결합니다. 알려진 보안 결함을 패치하기 위해 PHP 및 모든 종속 라이브러리를 정기적으로 업데이트하십시오. 최소 특권 원칙을 구현하여 응용 프로그램의 다른 부분에 필요한 권한 만 부여합니다. 가장 큰 PHP 7 기능이 가장 큰 보안 위험을 초래하는 것은 무엇입니까? PHP 7 기능이 상당한 보안 위험을 갖는 기능 :
몇몇 PHP 7 기능을 사용했을 때, 여기에는 다음이 포함됩니다.
: 이 함수는 php 코드로 문자열을 실행합니다. 비 사지화되지 않은 사용자 입력과 함께 를 사용하는 것은 매우 위험하며 임의의 코드 실행으로 이어질 수 있으므로 모든 비용으로 피해야합니다. 가능할 때마다 더 안전한 대안을 사용하십시오.
, , eval()
, : 이 함수는 쉘 명령을 실행합니다. 와 마찬가지로,이 함수를 비 사지화되지 않은 사용자 입력과 함께 사용하면 공격자는 서버에서 임의의 명령을 실행할 수 있습니다. 절대적으로 사용해야한다면 모든 입력을 엄격하게 검증하고 살균하십시오. 쉘 명령 실행이 필요하지 않은 대체 접근법을 고려하십시오. eval()
- , , ,
exec()
: shell_exec()
: system()
: 이러한 함수는 파일 경로의 적절한 검증없이 사용하면 파일 포함 취약점으로 이어질 수 있습니다. 항상 화이트리스트 접근 방식을 사용하고 경로를 엄격하게 검증하십시오. passthru()
eval()
: 이 함수는 쿼리 문자열을 변수로 구문 분석합니다. 비자니 화되지 않은 사용자 입력과 함께 사용하면 가변 덮어 쓰기 및 잠재적 코드 주입을 포함한 다양한 취약점으로 이어질 수 있습니다. 데이터를 직접 소독하고 데이터를 적절하게 소독하는 것을 선호합니다. include()
: include_once()
신뢰할 수없는 데이터를 사로화하면 데이터에 악의적 인 객체가 포함 된 경우 임의 코드 실행이 발생할 수 있습니다. 사막화 전에 항상 데이터를 검증하고 소독합니다. 가능한 경우 대체 직렬화 방법을 고려하는 것을 고려하십시오. require()
PHP 7 응용 프로그램을 보호하기 위해 강력한 입력 검증 및 소독을 구현할 수있는 방법은 무엇입니까? require_once()
강력한 입력 검증 및 소독 구현 : 강력한 입력 검증 및 소각은 PHP 7 애플리케이션에 중요합니다. 여기에는 두 가지 단계가 포함됩니다 : parse_str()
1. 유효성 검사 : 이는 입력 데이터가 예상 형식 및 제약 조건에 맞는지 확인합니다. 이것은 소독 이전에 발생해야합니다. 유효성 검사가 포함될 수 있습니다 : 데이터 유형 검사 : 입력이 올바른 유형인지 확인하십시오 (예 : 정수, 문자열, 부울).
길이 제한 : 정규 공격 및 기타 공격을 방지하는 길이를 제한합니다. 입력 형식을 검증하기위한 표현식 (예 : 이메일 주소, 전화 번호). 범위 점검 : 숫자 입력이 허용 가능한 범위 내에 속하게 보장합니다. 화이트리스트 : 특정 값 또는 패턴 만 허용합니다. 이것은 일반적으로 블랙리스트보다 선호됩니다.
2. 소독 : 이것은 입력 데이터를 정리하여 잠재적으로 유해한 요소를 제거하거나 중화시킵니다. 위생화는 컨텍스트 별이어야합니다 : html sanitization : XSS 공격을 방지하기 위해 HTML 태그를 제거하거나 탈출하십시오. HTML 정화기와 같은 라이브러리 사용 강력한 HTML 소독. 소금화 : 정기적 인 표현식에서 사용할 수있는 특수 문자를 제거하거나 탈출하거나 탈출하십시오. 예 :
소독이 모든 공격을 방지하기에 충분하지 않기 때문에 항상 를 검증하는 것을 잊지 마십시오. 입력 필터 및 유효성 검사 라이브러리를 사용하여 프로세스를 간소화하는 것을 고려하십시오. PHP 7 애플리케이션에서 데이터베이스 연결을 보호하기위한 모범 사례는 무엇입니까? 데이터베이스 연결을 보호하기위한 모범 사례 : 보안 데이터베이스 연결은 PHP 7 애플리케이션의 전반적인 보안에 가장 중요합니다. 다음 모범 사례를 따르십시오 : 준비된 문 또는 매개 변수화 쿼리 사용 : - 이것은 SQL 주입을 방지하는 가장 효과적인 방법입니다. SQL 코드를 데이터와 분리하여 공격자가 악의적 인 코드를 주입하지 못하게합니다. 자격 증명을 단단히 저장하십시오 :
코드에서 직접 데이터베이스 자격 증명을 직접하지 마십시오. webroot 외부에 저장된 환경 변수 또는 구성 파일을 사용합니다. - 강력한 비밀번호 사용 : 데이터베이스 사용자 계정에 강력하고 고유 한 암호를 선택하십시오.
최소한의 권한 원칙 : - 데이터베이스 사용자 수여 작업을 수행하는 데 필요한 권한 만 부여하십시오. 과도한 권한 부여를 피하십시오. 데이터베이스 감사 활성화 : 데이터베이스 시스템을 지원하는 경우 감사를 활성화하여 데이터베이스 활동을 추적하고 의심스러운 동작을 감지하십시오. 정기적 인 데이터베이스 소프트웨어 : 최신 보안 패치로 데이터베이스 인용 소프트웨어를 유지하십시오. 데이터 : 암호 및 신용 카드 정보와 같은 데이터베이스에 저장된 민감한 데이터를 암호화합니다.
입력 유효성 검사 및 소독 (다시!) : 준비한 문서를 사용하더라도 입력 유효성 검사 및 산화물은 여전히 다른 유형의 공격을 방지하는 데 필수적입니다. 데이터베이스 활동 모니터링 https. 보안 권장 사항. 응용 프로그램의 개발 및 배포 수명주기 전체에서 항상 보안 모범 사례를 우선시하십시오.
위 내용은 PHP 7의 일반적인 보안 취약점은 무엇이며 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!