1. 보안 테스트의 6가지 기본 원칙:
인증: 인증된 사용자에게 요청 반환
액세스 제어: 인증되지 않은 사용자에 대한 권한 제어 및 데이터 보호
무결성: 사용자는 서버에서 보낸 내용을 정확하게 수신해야 합니다. 정보의 기밀성
기밀성: 정보는 의도한 사용자에게 정확하게 전달되어야 합니다.
신뢰성: 얼마나 자주 실패합니까? 네트워크가 장애로부터 복구되는 데 얼마나 걸리나요? 치명적인 오류를 처리하기 위해 어떤 조치를 취합니까? (개인적으로는 이곳이 내결함성 및 재해 허용 테스트 범주에 더 치우쳐야 한다고 이해합니다.)
부인 방지: 사용자는 수신된 데이터가 특정 서버에서 온 것임을 증명할 수 있어야 합니다
2. 공통 보안 테스트 내용
권한 제어
SQL 주입
URL 보안 테스트
XSS(교차 사이트 스크립팅 공격)
CSRF(교차 사이트 요청 위조)
URL 점프 취약점
기타 보안 고려 사항
3 . 웹 애플리케이션에서 보안 문제를 일으키는 원인 모직물? 일반적으로 다음과 같은 이유가 있습니다.
1. 복잡한 응용 시스템에는 코드의 양이 많고 개발자도 많기 때문에 과실이 불가피합니다.
2. 시스템이 반복적으로 업그레이드되고 인력이 자주 변경되어 코드 불일치가 발생했습니다.
3. 역사적 레거시 시스템과 시범 운영 시스템 등 여러 웹 시스템이 동일한 서버에서 함께 실행됩니다.
4. 개발자가 보안 코딩 교육을 받지 않았거나 회사에 통합된 보안 코딩 표준이 없습니다.
5. 테스터는 경험이 없거나 전문적인 보안 평가 테스트 없이 출시됩니다.
6. 다음은 몇 가지 예입니다.
1) 사용자 입력을 신뢰하지 말고 사용자 입력을 확인하세요.
2) 숫자 입력은 올바른 숫자여야 합니다.
3) 인코딩 기호의 특수 처리 문자 입력
4) Get, Post, Cookie 및 기타 HTTP 헤더를 포함한 모든 입력 지점 확인
4. 보안 테스트의 일반적인 취약점 및 솔루션:
1. XSS 크로스 사이트 스크립팅 공격
SS는 SQL과 유사합니다. XSS는 웹 페이지를 통해 악성 스크립트를 삽입합니다. 사용되는 주요 기술도 프런트엔드 HTML 및 JavaScript 스크립트입니다. 사용자가 웹을 탐색할 때 사용자의 브라우저 동작을 제어하기 위한 공격 방법이 구현됩니다.
성공적인 XSS는 사용자의 쿠키를 획득하고 이 쿠키를 사용하여 웹사이트에 대한 사용자의 운영 권한을 훔칠 수 있으며, 사용자의 연락처 목록을 획득하고 공격자의 신원을 사용하여 특정 대상에게 대량의 메시지를 보낼 수도 있습니다. 단체 스팸 등
XSS는 저장 유형(영구 XSS), 반사 유형(비영구 XSS), DOM 유형의 세 가지 범주로 나뉩니다.
테스트 방법:
데이터 입력 인터페이스에 <script>alert(/123/)</script>를 입력하세요. 성공적으로 저장한 후 대화 상자가 나타나면 여기에 XSS 취약점이 있음을 나타냅니다. .
또는 URL 요청의 매개변수를 <script>alert(/123/)</script>로 변경하세요. 페이지에 대화 상자가 나타나면 XSS 취약점이 있음을 나타냅니다.
2. SQL 주입
SQL 주입은 웹 양식 제출에 SQL 명령을 삽입하거나 도메인 이름이나 페이지 요청에 대한 쿼리 문자열을 입력
하여 궁극적으로 서버를 속여 악성 SQL 명령을 실행하도록 하는 것입니다.
SQL 인젝션으로 인해 발생할 수 있는 피해로는 웹 페이지 및 데이터 변조, 핵심 데이터 도난, 데이터베이스가 위치한 서버가 공격을 받아 꼭두각시 호스트로 변하는 등이 있습니다.
예를 들어 일부 웹사이트는 미리 컴파일된 SQL을 사용하지 않으며 사용자가 인터페이스에 입력한 일부 필드가 SQL에 추가됩니다. 이러한 필드에는 일부 악성 SQL 명령이 포함되어 있을 가능성이 높습니다. 예: 비밀번호 = "1' OR '1'='1"; 사용자 비밀번호를 모르더라도 정상적으로 로그인이 가능합니다.
테스트 방법:
쿼리해야 하는 페이지에서 올바른 쿼리 조건과 1=1과 같은 간단한 SQL 문을 입력하고, 올바른 쿼리 조건을 입력하여 반환된 결과가 일치하는지 확인합니다. 이는 애플리케이션이 사용자 입력을 필터링하지 않는다는 의미입니다. 여기에 SQL 주입 취약점이 있다고 사전 판단할 수 있습니다.
수정 제안:
사용자 입력을 확인하거나 정규식을 사용하거나 변환 길이를 제한할 수 있습니다. 다음 키워드 등;
||alert|and |exec|execute|insert|select|delete|update|count|drop|chr|mid|master|truncate|declare|sitename|netuser|xp_cmdshell|or|+ |,|like'|and|exec|execute|insert| create|drop|table|from|grant|group_concat|column_name|information_schema.columns|table_schema|union|where|select|delete|update|order|by|count| chr|mid|master|truncate|declare|or|-- |+|,|like|//
동적 어셈블리 SQL을 사용하지 마세요. 매개변수화된 SQL을 사용하거나 데이터 쿼리 및 액세스를 위해 저장 프로시저를 직접 사용할 수 있습니다.
관리자 권한으로 데이터베이스 연결을 사용하지 말고 각 애플리케이션마다 사용하세요. 제한된 권한으로 별도의 데이터베이스 연결을 사용하세요.
애플리케이션의 예외 정보는 가능한 한 적은 수의 프롬프트를 제공해야 하며 사용자 정의 오류 정보를 사용하여 원본을 래핑하는 것이 가장 좋습니다. 오류 정보.
3. URL 점프 취약점
URL 점프 취약점, 즉 확인되지 않은 리디렉션 취약점은 웹 프로그램이 매개변수에 있는 URL로 직접 점프하거나 페이지에 임의의 개발자의 URL을 도입하여 프로그램이 부팅되는 것을 의미합니다. 안전하지 않은 제3자 영역으로 인해 보안 문제가 발생합니다.
테스트 방법:
1. 패킷 캡처 도구를 사용하여 요청을 캡처합니다.
2. 302 URL을 잡아서 대상 주소를 수정하고 점프할 수 있는지 확인하세요.
ps: 그러나 이제 많은 점프에 리퍼러 확인이 추가되어 공격자가 점프에 실패하게 됩니다.
4. 파일 업로드 취약점
파일 업로드 공격은 공격자가 실행 파일을 서버에 업로드하여 실행하는 것을 의미합니다.
이 공격 방법이 가장 직접적이고 효과적입니다. 업로드되는 파일은 바이러스, 트로이 목마, 악성 스크립트, 웹쉘 등일 수 있습니다.
Webshell은 asp, php, jsp, cgi 등의 웹 파일 형태로 존재하는 명령 실행 환경으로, 웹 백도어라고도 할 수 있습니다. 공격자는 영향을 받는 시스템에 웹쉘을 방지하거나 삽입한 후, 웹쉘을 통해 쉽게 시스템에 진입하여 웹사이트 서버를 제어할 수 있습니다.
테스트 방법:
업로드된 파일 형식, 크기 등을 엄격히 확인하고, 악성코드가 포함된 파일의 업로드를 금지합니다.
해당 디렉터리의 실행 권한을 확인하세요. 브라우저를 통해 웹 서버의 모든 디렉터리에 접근할 수 있으며 디렉터리 구조가 반환되는지 확인하실 수 있습니다.
5. CSRF 크로스 사이트 위조 요청 공격
CSRF는 로그인한 사용자의 신원을 사용하여 사용자의 이름으로 악의적인 요청을 보내 불법적인 작업을 완료합니다.
예: 사용자가 CSRF 취약점이 있는 웹 사이트 A를 탐색하고 신뢰하는 경우 브라우저는 해당 쿠키를 생성하고 사용자는 해당 웹 사이트를 종료하지 않고 위험한 웹 사이트 B를 방문합니다.
위험한 웹사이트 B가 웹사이트 A에 접속을 요청하고 요청합니다. 브라우저는 사용자의 쿠키 정보를 가지고 웹사이트 A를 방문합니다. 웹사이트 A는 해당 요청이 사용자 자신에게서 온 것인지 위험한 웹사이트 B에서 온 것인지 알 수 없기 때문에 위험한 웹사이트 B로부터의 요청을 처리하여 사용자 동작을 시뮬레이션합니다. . 이것이 CSRF 공격의 기본 아이디어이다.
테스트 방법:
1. 동일한 브라우저에서 두 페이지를 엽니다. 한 페이지의 권한이 만료된 후에도 다른 페이지가 성공적으로 작동할 수 있다면 위험이 있습니까?
2. 도구를 사용하여 요청을 보내고, http 요청 헤더에 리퍼러 필드를 추가하지 말고, 반환된 메시지의 응답을 확인하고, 오류 인터페이스나 로그인 인터페이스로 리디렉션하세요.
위 내용은 일반적인 웹 보안 취약점과 테스트 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!