운영 및 유지보수 안전 일반적인 웹 보안 취약점과 테스트 방법은 무엇입니까?

일반적인 웹 보안 취약점과 테스트 방법은 무엇입니까?

May 15, 2023 pm 01:28 PM
web

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python+Flask를 사용하여 웹 페이지의 실시간 업데이트 및 로그 표시를 구현하는 방법 Python+Flask를 사용하여 웹 페이지의 실시간 업데이트 및 로그 표시를 구현하는 방법 May 17, 2023 am 11:07 AM

1. 모듈을 사용하여 파일에 로그 출력: 로깅은 사용자 정의 수준 로그를 생성하고 지정된 경로에 로그를 출력할 수 있습니다. 로그 수준: 디버그(디버그 로그) = 5) {clearTimeout(시간) // 한 번에 모두 10번 획득한 경우 행이 비어 있음 로그 지우기 예약 작업}return}if(data.log_type==2){//(i=0;i에 대해 새 로그를 얻은 경우)

Nginx 웹 서버 캐디를 사용하는 방법 Nginx 웹 서버 캐디를 사용하는 방법 May 30, 2023 pm 12:19 PM

Caddy 소개 Caddy는 현재 Github에 38,000개 이상의 별이 있는 강력하고 확장성이 뛰어난 웹 서버입니다. Caddy는 Go 언어로 작성되었으며 정적 리소스 호스팅 및 역방향 프록시에 사용할 수 있습니다. Caddy에는 다음과 같은 주요 기능이 있습니다. Nginx의 복잡한 구성에 비해 원래 Caddyfile 구성은 매우 간단합니다. 기본적으로 자동화된 HTTPS 구성을 지원하고 HTTPS 인증서를 자동으로 적용할 수 있습니다. 수만 개의 사이트를 Go 언어로 작성하여 어디서나 실행할 수 있으며 메모리 안전성이 더욱 보장됩니다. 우선 CentO에 직접 설치해보겠습니다.

웹상의 얼굴 차단 공격에 대한 실시간 보호(머신러닝 기반) 웹상의 얼굴 차단 공격에 대한 실시간 보호(머신러닝 기반) Jun 10, 2023 pm 01:03 PM

얼굴 차단 사격은 영상 속 인물을 가리지 않고 다수의 사격이 떠다니는 것처럼 보이도록 하여 마치 인물 뒤에서 떠다니는 것처럼 보이게 하는 것을 의미합니다. 기계 학습은 몇 년 동안 널리 사용되었지만 많은 사람들은 이러한 기능을 브라우저에서도 실행할 수 있다는 사실을 모릅니다. 이 기사에서는 기사 마지막 부분에 적용 가능한 몇 가지 시나리오를 소개합니다. 이 솔루션을 통해 몇 가지 아이디어를 얻을 수 있기를 바랍니다. mediapipeDemo(https://google.github.io/mediapipe/)는 주류 얼굴 차단 공세 주문형 업로드의 구현 원리를 보여줍니다. 비디오 서버 백그라운드 계산은 비디오 화면의 세로 영역을 추출하고 이를 svg로 변환합니다. 클라이언트가 비디오를 재생하는 동안 서버에서 svg를 다운로드하고 사격, 초상화와 결합합니다.

frps 서버와 웹이 포트 80을 공유하도록 nginx를 구성하는 방법 frps 서버와 웹이 포트 80을 공유하도록 nginx를 구성하는 방법 Jun 03, 2023 am 08:19 AM

우선, frp가 무엇인지에 대해 의문이 생길 것입니다. 간단히 말해서, frp는 인트라넷 침투 도구입니다. 클라이언트를 구성한 후 서버를 통해 인트라넷에 액세스할 수 있습니다. 이제 내 서버는 nginx를 웹 사이트로 사용했으며 포트 80은 하나만 있습니다. FRP 서버도 포트 80을 사용하려면 어떻게 해야 합니까? 쿼리 후에는 nginx의 역방향 프록시를 사용하여 이를 수행할 수 있습니다. 추가하려면: frps는 서버이고 frpc는 클라이언트입니다. 1단계: 서버에서 nginx.conf 구성 파일을 수정하고 nginx.conf의 http{}에 다음 매개변수를 추가합니다. server{listen80

Java API 개발에서 웹 서버 처리를 위해 Jetty7 사용 Java API 개발에서 웹 서버 처리를 위해 Jetty7 사용 Jun 18, 2023 am 10:42 AM

JavaAPI 개발에서 웹 서버 처리를 위해 Jetty7 사용 인터넷의 발전과 함께 웹 서버는 애플리케이션 개발의 핵심 부분이 되었으며 많은 기업의 초점이기도 합니다. 증가하는 비즈니스 요구를 충족하기 위해 많은 개발자가 웹 서버 개발에 Jetty를 사용하기로 선택했으며 그 유연성과 확장성은 널리 인정받고 있습니다. 이 기사에서는 We 용 JavaAPI 개발에서 Jetty7을 사용하는 방법을 소개합니다.

Golang을 사용하여 웹 애플리케이션에 대한 양식 유효성 검사를 구현하는 방법 Golang을 사용하여 웹 애플리케이션에 대한 양식 유효성 검사를 구현하는 방법 Jun 24, 2023 am 09:08 AM

양식 유효성 검사는 웹 애플리케이션 개발에서 매우 중요한 링크로, 애플리케이션의 보안 취약성과 데이터 오류를 방지하기 위해 양식 데이터를 제출하기 전에 데이터의 유효성을 확인할 수 있습니다. Golang을 사용하여 웹 애플리케이션에 대한 양식 유효성 검사를 쉽게 구현할 수 있습니다. 이 기사에서는 Golang을 사용하여 웹 애플리케이션에 대한 양식 유효성 검사를 구현하는 방법을 소개합니다. 1. 폼 유효성 검사의 기본 요소 폼 유효성 검사를 구현하는 방법을 소개하기 전에 먼저 폼 유효성 검사의 기본 요소가 무엇인지 알아야 합니다. 양식 요소: 양식 요소는

웹 개발에서 PHP는 프런트엔드인가요, 백엔드인가요? 웹 개발에서 PHP는 프런트엔드인가요, 백엔드인가요? Mar 24, 2024 pm 02:18 PM

PHP는 웹 개발의 백엔드에 속합니다. PHP는 주로 서버 측 로직을 처리하고 동적 웹 콘텐츠를 생성하는 데 사용되는 서버 측 스크립팅 언어입니다. 프런트엔드 기술과 비교하여 PHP는 데이터베이스와의 상호 작용, 사용자 요청 처리, 페이지 콘텐츠 생성과 같은 백엔드 작업에 더 많이 사용됩니다. 다음으로, 백엔드 개발에서 PHP 적용을 설명하기 위해 특정 코드 예제가 사용됩니다. 먼저 데이터베이스에 연결하고 데이터를 쿼리하기 위한 간단한 PHP 코드 예제를 살펴보겠습니다.

조종석 웹 UI에서 관리 액세스를 활성화하는 방법 조종석 웹 UI에서 관리 액세스를 활성화하는 방법 Mar 20, 2024 pm 06:56 PM

Cockpit은 Linux 서버용 웹 기반 그래픽 인터페이스입니다. 이는 주로 신규/전문가 사용자가 Linux 서버를 보다 쉽게 ​​관리할 수 있도록 하기 위한 것입니다. 이 문서에서는 Cockpit 액세스 모드와 CockpitWebUI에서 Cockpit으로 관리 액세스를 전환하는 방법에 대해 설명합니다. 콘텐츠 항목: Cockpit 입장 모드 현재 Cockpit 액세스 모드 찾기 CockpitWebUI에서 Cockpit에 대한 관리 액세스 활성화 CockpitWebUI에서 Cockpit에 대한 관리 액세스 비활성화 결론 조종석 입장 모드 조종석에는 두 가지 액세스 모드가 있습니다. 제한된 액세스: 이는 조종석 액세스 모드의 기본값입니다. 이 액세스 모드에서는 조종석에서 웹 사용자에 액세스할 수 없습니다.

See all articles