PHP는 개발자에게 뛰어난 유연성을 제공하지만 가까운 미래에 보안 문제에 잠재적인 숨겨진 위험을 가져오기도 합니다. 문제에 관해서는 기사를 번역하고 제 나름대로 발전한 소감을 덧붙여 여기에 요약하고 싶습니다.
인터넷 서비스를 개발할 때 항상 보안 개념을 염두에 두고 개발하는 코드에 이를 반영해야 합니다. PHP 스크립팅 언어는 특히 경험이 부족한 대부분의 개발자의 경우 보안 문제를 걱정하지 않습니다. 금전 문제와 관련된 거래에 관해 이야기할 때마다 포럼이나 장바구니 개발과 같은 보안 고려 사항에 특별한 주의를 기울여야 합니다.
양식을 신뢰하지 마세요
일반적인 Javascript 프론트 엔드 검증의 경우 브라우저의 JavaScript 엔진을 끄는 등 사용자의 행동을 알 수 없기 때문에 악성 데이터가 게시됩니다. 서버에. XSS 공격 및 SQL 주입을 방지하려면 각 PHP 스크립트에 전달된 데이터를 확인하여 서버 측에서 확인해야 합니다.
사용자를 신뢰하지 마세요
숨겨진 위협, 모든 데이터를 정리해야 합니다
전역 변수 닫기
php.ini 파일에서 다음 구성을 만듭니다:
register_globals = Off
이 구성 옵션이 켜져 있으면 뛰어난 보안 숨겨진 위험. 예를 들어, 수신된 데이터를 데이터베이스에 삽입하는 process.php 스크립트 파일이 있습니다. 사용자 입력 데이터를 수신하는 양식은 다음과 같을 수 있습니다.
<input name="username" type="text" size="15" maxlength="64">
이렇게 하면 데이터가 process.php의 경우, PHP는 $username 변수를 등록하고, 이 변수 데이터를 process.php에 제출하고, POST 또는 GET 요청 매개변수에 해당 변수를 설정합니다. 초기화가 표시되지 않으면 다음과 같은 문제가 발생합니다. (참고: http://www.lai18.com/content/434606.html)
<?php // Define $authorized = true only if user is authenticated if (authenticated_user()) { $authorized = true; } ?>
여기서는 authenticated_user 함수가 초기화 여부를 결정한다고 가정합니다. $authorized 변수 값,register_globals 구성이 켜져 있으면 모든 사용자는 이 확인을 우회하기 위해 $authorized 변수의 값을 임의의 값으로 설정하라는 요청을 보낼 수 있습니다.
제출된 모든 데이터는 $_POST, $_GET, $_FILES, $_SERVER, $_REQUEST 등을 포함한 PHP의 사전 정의된 내장 전역 배열을 통해 얻어야 합니다. 여기서 $_REQUEST는 $_GET/$_POST/$_COOKIE입니다. 세 배열의 결합 변수의 경우 기본 순서는 $_COOKIE, $_POST, $_GET입니다.
권장 보안 구성 옵션
error_reporting을 Off로 설정: 사용자에게 오류 정보를 노출하지 않습니다. 개발 중에 ON으로 설정할 수 있습니다.
safe_mode를 Off로 설정
register_globals를 Off로 설정
다음 기능을 비활성화합니다. , exec, passthru, shell_exec, proc_open, popen
open_basedir을 /tmp로 설정하여 세션 정보에 저장 권한을 부여하고 별도의 웹사이트 루트 디렉토리를 설정합니다
expose_php를 Off
allow_url_fopen을 Off
로 설정합니다 allow_url_include가 Off
으로 설정되어 있습니다. 데이터베이스를 운용하는 SQL문의 경우 사용자가 원본 SQL문의 기능을 변경시키는 특정 명령문을 입력할 수 있으므로 보안에 특별한 주의가 필요합니다. 다음과 유사한 예:
"PHP 보안 프로그래밍 시리즈" 시리즈 기술 기사를 정리하여 모았습니다
PHP 보안 프로그래밍 시리즈 즐겨찾기는 PHP 보안 프로그래밍에 대한 지식을 수집하고 PHP 보안 프로그래밍에 대한 학습 참고 자료를 제공합니다.
1discuz의 PHP는 SQL 주입 기능을 방지합니다
2 PHP에서 xss 공격을 방지하는 방법
3 PHP 안전 프로그래밍: 출력 탈출
4 PHP 안전 프로그래밍: 사용자 입력 필터링
5 PHP 안전 프로그래밍: 유용성 및 데이터 추적
6PHP 보안 프로그래밍: 관련 없는 사람들에게 오류 메시지가 표시되지 않도록 하세요
7PHP 보안 프로그래밍: Register_globals의 보안
8PHP 보안 프로그래밍: 웹사이트 보안 설계의 몇 가지 원칙
9 방어
13PHP 보안 프로그래밍: 양식 및 데이터 보안
14PHP 보안 프로그래밍: URL 의미론에 따른 공격
15PHP 보안 프로그래밍: 파일 업로드 공격 방어
1 6PHP 보안 프로그래밍: 크로스 사이트 스크립팅 공격 방어
17PHP 보안 프로그래밍: 세션 고정 합법적 세션 획득
18PHP 보안 프로그래밍: SQL 주입 방지
19PHP 보안 프로그래밍: 쿠키 노출 세션 하이재킹으로 이어짐
20PHP 보안 프로그래밍: 소스 코드 노출 방지
21PHP 보안 프로그래밍: 백도어 URL 조심
22PHP 보안 프로그래밍: 세션 하이재킹 방어
23 PHP 보안 프로그래밍: 무차별 대입 크래킹 공격
24PHP 보안 프로그래밍: 비밀번호 스니핑 및 재생 공격
25PHP 보안 프로그래밍: 로그인 상태 기억을 위한 안전한 방법
26PHP 보안 프로그래밍: 셸 명령 주입
27PHP 보안 프로그래밍: 원격 파일 열기의 위험
28 PHP 보안 프로그래밍: 파일 디렉터리 추측 취약점
29 PHP 보안 프로그래밍: 파일 이름 조작 방지
30페소 보안 프로그래밍: 파일이 포함된 코드 주입 공격
31PHP 보안 프로그래밍: 향상된 세션 데이터 보안
32PHP 보안 프로그래밍: 공유 호스팅을 위한 소스 코드 보안
33PHP 보안 프로그래밍: 세션 데이터 주입
34PHP 안전한 프로그래밍: 호스트 파일 디렉터리 검색
35PHP 안전 프로그래밍: PHP 안전 모드
36php 안전은 $_GET 문자 이스케이프 처리 없이 $를 사용하여 직접 값을 가져옵니다
37php 취약점 방지 전략을 세우고 고성능 웹을 만듭니다
38 XSS 공격이란? PHP는 XSS 공격 방지 기능
39 PHP 메서드를 구문 분석하여 반복 양식 제출을 방지
40php 보안 개꼬리 연속 밍크
41PHP는 도메인 간 양식 제출을 방지합니다.
42php는 SQL 주입을 방지합니다. 자세한 설명 및 예방
43php는 SQL 주입 코드 예제를 방지합니다.
44php는 SQL 주입 예제 분석 및 여러 일반적인 공격 정규 표현식을 방지합니다.
45PHP 소스 코드 또는 중요한 구성 정보가 노출되는 것을 방지하는 보안
46PHP 게시물의 반복적인 데이터 제출을 방지하는 간단한 예
47URL 제출 시 위조된 데이터를 방지하는 php 메소드
48PHP 양식의 반복 제출을 방지하는 몇 가지 일반적인 방법 요약
49php 주소 표시줄에서 위조된 데이터가 제출되는 것을 방지하는 방법 URL
50php 외부 원격 양식 제출을 방지하는 방법
51php 예방 sql 주입을 위한 페이징 매개변수 필터링의 예
52 PHP 보안: Apache 모드로 설치할 때 가능한 공격 및 솔루션
53 PHP 보안: 파일 시스템 보안 및 예방 조치
54 PHP 보안 파일 시스템 보안 - Null 문자 문제
55 PHP 보안 데이터베이스 보안 - SQL 주입 및 예방 조치
56 PHP 보안 소개 및 일반 원칙
57 PHP 보안 가능 CGI 모드로 설치 시 발생하는 공격 및 해결 방법
58PHP 보안 사용자가 제출한 데이터
59PHP 보안 데이터베이스 보안 - 설계, 연결 및 암호화
60PHP 보안 매직 따옴표 - 매직 따옴표란 무엇이며 어떻게
61PHP 보안 숨기기 PHP 스크립트 확장
62PHP 보안을 사용하는 Register Globals
63PHP 보안 오류 보고
64php 악성 새로 고침 및 티켓 브러시 방지 방법
65php 웹 사이트 새로 고침을 방지하는 방법
66 PHP 웹 사이트의 일반적인 보안 취약점 요약 및 해당 예방 조치
관련 권장 사항:
위 내용은 일부 PHP 개발 보안 문제가 컴파일되었습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!