찾다
기술 주변기기IT산업웹 사이트의 재생 공격을 방지하는 방법

재생 공격과의 싸움 : 쉬운 방법 토큰 기반 접근 방식

공격자가 자신에 속하지 않는 네트워크 패킷을 가로 채고 재생하는 공격은 매우 위험하며 때로는 심각한 손상을 일으킨다. 암호화 된 통신 채널에서도 공격자는 암호 해독 키에 대한 액세스없이 이러한 공격을 시작할 수 있습니다. 공격자는 단순히 당신의 라인에 도청하고 특정 패킷 세트에서 수행하는 작업을 대략 이해 한 다음 해당 패킷이나 요청을 재현함으로써 의사 소통을 방해하거나 더 심각한 손상을 유발할 수 있습니다.

이 기사는 웹 사이트가 재생 공격을받지 않도록 간단하고 사용하기 쉬운 기본 방법을 소개합니다. 또한 화난 사용자가 잘못된 시간 동안 마지막 게시물 요청을 반복적으로 반복하는 것을 방지합니다.

이것은 완전한 솔루션과는 거리가 멀다. 해결해야 할 결함과 문제가 있지만 토큰과 간단한 프로토콜이 웹 사이트 보안을 향상시킬 수있는 방법에 대한 대략적인 아이디어를 제공합니다. 샘플 코드 및 구현은 ASP.NET 및 C#을 사용하여 수행되지만 다른 플랫폼 또는 프로그래밍 언어에 개념을 배포 할 수 있습니다.

일회성 토큰의 개념

이 기사에서 제공된 솔루션의 핵심 아이디어는 각 HTTP 응답을 다음 게시물 요청에만 유효한 토큰 문자열에 바인딩하는 것입니다. 다음은 관련된 단계의 간단한 고장입니다.

클라이언트는 URL 또는 페이지를 입력하거나 링크를 클릭하여 GET 요청을합니다.

서버는 임의의 토큰을 생성합니다. 그런 다음 세션에 토큰 사본을 저장하고 토큰 사본을 클라이언트에게 전송 된 응답 태그에 포함시킵니다.

클라이언트는 컨텐츠를 처리하고 사용자가 무작위로 생성 된 토큰이 포함 된 버튼을 클릭하면 서버에 게시물 요청을 보냅니다.

서버는 요청을 수신하고 첨부 된 토큰이 사용자 세션에 저장된 토큰과 같을 때만 요청을 계속 처리합니다.

서버는 토큰을 무효화하고 2 단계로 돌아갑니다. 여기서 새로운 랜덤 토큰을 사용하여 응답을 공식화합니다.

이런 방식으로, 악의적 인 사용자가 서버로 전송 된 임계 요청을 가로 채더라도 요청에 포함 된 토큰이 서버로 전송 된 후 더 이상 유효하지 않으므로 요청을 반복 할 수 없습니다. F5 키를 실수로 누르고 서버에 정보를 게시 한 후 요청을 재현 한 부주의 한 사용자에게도 마찬가지입니다.
  1. 테스트 환경 일회성 토큰의 개념을 구현하려면 간단한 텍스트 상자와 제출 버튼이있는 샘플 페이지를 만듭니다. 또한 테스트 출력을 표시하기 위해 태그 컨트롤을 추가합니다.
  2. <input type="hidden"> 배경 코드는 제출 시간과 텍스트 상자에 포함 된 데이터를 보여주는 간단한 스 니펫입니다.
  3. 이것은 초기 GET 요청 후 페이지의 출력입니다.
  4. 페이지를 제출 한 후 출력은 다음과 같습니다.

    문제는 페이지를 새로 고치면 데이터를 다시 게시하고 마지막 요청을 반복하면 서버가 문제없이 처리한다는 것입니다. 이제 방금 1,000,000 달러의 주요 거래를하고 실수로 키보드에서 F5 키를 누르면 상상해보십시오. 또는 악의적 인 사용자가 귀하의 요청을 가로 채고, 지불 거래라고 생각하고, 자금을 훔치고 보복하기 위해 반복합니다.

    How to Prevent Replay Attacks on Your Website

    솔루션 중복 게시물 요청을 방지하기 위해 태그를 업데이트하여 토큰을 저장하는 숨겨진 필드를 추가합니다.

    How to Prevent Replay Attacks on Your Website 다음으로, 우리는 임의의 토큰을 생성하고 숨겨진 필드와 세션 컬렉션에 포함시키는 함수를 생성합니다.

    후에는 게시 된 토큰이 세션에 저장된 토큰과 동일한 경우에만 게시 된 데이터가 표시되도록 page_load () 함수를 변경합니다.

    마지막으로, 최종 출력이 클라이언트에게 전송되기 전에 onprerender () 함수를 무시하기 위해 새 토큰을 생성합니다. 새로운 요청이 전송 될 때마다 업데이트되므로 일회성 토큰이됩니다. How to Prevent Replay Attacks on Your Website

    이제 버튼을 클릭하여 양식을 제출하면 이전과 같은 방식으로 작동합니다. 그러나 페이지를 새로 고침하여 재생 공격을 시뮬레이션하려고하면 양식으로 전송 된 토큰이 서버에 저장된 토큰과 더 이상 같지 않기 때문에 다음 오류가 발생합니다.

    이런 식으로 유효한 버튼 클릭 제출 및 오류 반복 요청을 구별 할 수 있습니다. How to Prevent Replay Attacks on Your Website

    코드 향상 이 코드는 페이지의 재생 공격 문제를 해결하지만 여전히 해결해야 할 몇 가지 문제가 있습니다.

    모든 페이지에서 반복해야합니다 동일한 웹 사이트에 여러 개의 탭이있는 경우 사이에 토큰이 공유되므로 작동하지 않습니다. 매우 못 생겼어

    열렬한 객체 지향 프로그래밍 (OOP) 애호가로서 저는이 최고의 프로그래밍 패러다임의 힘을 활용하여 코드를 개선 할 수있는 기회를 찾고 있습니다. How to Prevent Replay Attacks on Your Website 위의 문제를 해결하기 위해, 우리가해야 할 첫 번째 일은 토큰 생성 기능을 캡슐화하는 클래스를 정의하는 것입니다. 우리는 클래스 토큰 화 된 페이지의 이름을 지정하여 System.web.ui.page에서 파생하여 향후 페이지에 사용할 수 있도록합니다.

    다음으로 코드를 쉽게 읽고 관리 할 수 ​​있도록 코드를 쉽게 읽을 수 있도록 페이지 토큰과 세션 토큰을 토큰 화 된 페이지 클래스에 추가 된 두 가지 속성으로 캡슐화합니다. 코드를 웹 페이지에서 쉽게 포업 할 수 있도록 입력 필드를 숨기는 대신 viewstate 컬렉션을 사용하여 페이지 토큰을 저장합니다. 또한 Page.title 속성을 세션에 토큰을 저장하는 키로 사용합니다. 이를 통해 코드가 향상되고 웹 사이트 사용을 브라우저의 단일 탭으로 제한하는 두 번째 문제를 부분적으로 해결할 수 있습니다. 이 변경 사항을 적용하면 다른 탭에서 웹 사이트의 다른 페이지를 열 수 있지만 토큰을 공유하므로 별도의 탭에서 동일한 페이지의 여러 인스턴스를 열 수 없습니다. 이 문제는 나중에 해결됩니다. How to Prevent Replay Attacks on Your Website

    다음으로, 우리는 Istokenvalid라는 읽기 전용 부울 속성을 추가합니다. Ispostback 및 Isvalid와 같은 다른 페이지 속성의 예를 따릅니다. 이 속성의 목적은 페이지 토큰이 세션 토큰과 동일하도록하는 것입니다.

    How to Prevent Replay Attacks on Your Website 마지막으로, 테스트 환경에서와 마찬가지로 GeneraterAndomToken () 함수와 OnPrerender () 이벤트의 재정의를 추가합니다.

    이제 일회성 토큰 모드를 사용하려면 새 페이지를 만들고 토큰 화면에서 파생하고 일회성 토큰이 필요할 때 istokenvalid를 사용하면됩니다.

    How to Prevent Replay Attacks on Your Website

    훨씬 낫습니다.

    더 나은 이 코드의 한 가지 문제는 브라우저에 동일한 페이지를 가리키는 두 개의 탭이있는 경우 하나의 탭을 게시하면 동일한 세션 토큰 키를 사용하기 때문에 다른 탭의 토큰이 무효화됩니다. 이는 토큰 ID를 추가하여 해결할 수 있으며,이 탭에서 발생하는 각 요청-응답 순서는 고유 한 토큰 세트를 사용하고 같은 페이지의 다른 요청을 방해하지 않도록합니다. 가장 먼저해야 할 일은 TokenizedPage 클래스를 반환하고 Tokenid 속성을 추가하는 것입니다. 이 속성은 처음으로 초기 GET 요청을 호출 할 때 임의의 ID를 생성하고 향후 재사용을 위해 ViewState 컬렉션에 저장합니다.

    How to Prevent Replay Attacks on Your Website 다음으로, 우리는 Page.title 속성을 사용하는 대신 Tokenid 속성을 사용하도록 SessionHidDentoken 속성을 변경합니다.

    멋진 점은 추상화 및 캡슐화 원칙을 사용하기 때문에 (OOP의 이점에 대해 다시 한 번 감사 드리기 때문에) 다른 변경을 할 필요가 없으며 새로운 메커니즘은 우리가 얻은 모든 페이지에서 작동합니다. 토큰 화장. How to Prevent Replay Attacks on Your Website 나머지 질문 이것은 일회성 토큰 모드에 관한 것입니다. 두 가지 질문이 남았습니다 :

    각 세션에 대해 (보다 정확하게는, 각 세션에 전송 된 GET 요청 수), 무제한 수의 토큰 ID가 생성됩니다. 이것은 수량 제한을 초과하거나 특정 기간 동안 사용되지 않을 때 이전 ID를 팝업하는 스택 또는 캐시 메커니즘을 구현하여 해결할 수 있습니다. 구현을 당신에게 맡길 것입니다.

    기본 랜덤 번호 생성기는 가장 안전하고 신뢰할 수있는 임의성 소스가 아니며 정통한 해커가 토큰 시퀀스를 예측할 수 있습니다. 그러나 SSL 암호화를 사용하면 어쨌든 토큰을 얻을 수 없습니다.

    다른 플랫폼 및 프로그래밍 언어에서 구현을 추가하거나 공유하고 싶은 개선 사항이 있습니까? 아래 의견 섹션에 메시지를 남겨주세요.

    웹 사이트 재생 공격 방지 (FAQ) FAQ 재생 공격은 무엇이며 어떻게 작동합니까?

    재생 공격은 효과적인 데이터 전송이 반복되거나 악의적으로 또는 사기 적으로 지연되는 사이버 공격의 한 형태입니다. 공격자는 데이터를 가로 채고 재전송하여이를 수행하며, 이는 IP 패킷 교체를 통해 가장 한 공격의 일부일 수 있습니다. 이는 커뮤니케이션 및 데이터의 보안에 심각한 위협이됩니다.

    재생 공격을 감지하는 방법은 무엇입니까?
      전송되는 데이터가 유효하고 초기에 승인 된 사용자가 전송하기 때문에 재생 공격 감지는 어려울 수 있습니다. 그러나 재생 공격을 보여줄 수있는 몇 가지 징후가 있습니다. 여기에는 중복 전송의 지연 또는 데이터 전송이 포함됩니다. 또한 타임 스탬프 및 일련 번호와 같은 보안 조치를 구현하면 재생 공격을 감지 할 수 있습니다.
    • 재생 공격의 결과는 무엇입니까?
    • 재생 공격의 결과는 차단 된 데이터의 특성에 따라 심각 할 수 있습니다. 민감한 정보, 사기 거래 및 보안 시스템 위반에 대한 무단 액세스로 이어질 수 있습니다. 이는 재정적 손실, 평판 손상 및 잠재적 인 법적 영향으로 이어질 수 있습니다.
    • 내 웹 사이트가 재생되는 것을 방지하는 방법은 무엇입니까?
    • 재생 공격을 방지하기위한 몇 가지 전략이 있습니다. 여기에는 보안 통신 프로토콜 (예 : SSL 또는 TLS) 사용, 타임 스탬프 또는 일련 번호 구현, 일회성 암호 또는 임의 번호 사용이 포함됩니다. 또한 네트워크 트래픽을 정기적으로 모니터링하고 감사하면 재생 공격을 감지하고 방지 할 수 있습니다.
    임의의 숫자는 무엇이며 재생 공격을 어떻게 방지합니까?

    랜덤 번호는 커뮤니케이션 세션에서 한 번만 사용되는 임의 또는 의사 랜덤 번호입니다. 동일한 데이터를 여러 번 전송하더라도 각 데이터 전송이 고유한지 확인하여 재생 공격을 방지합니다. 이로 인해 공격자가 데이터 전송을 성공적으로 재생하는 것을 방지합니다.

    SSL 또는 TLS의 재생 공격을 방지하는 방법은 무엇입니까?

    SSL (Secure Sockets Layer) 및 TLS (Transport Layer Security)는 네트워크 보안 통신을 제공하는 암호화 프로토콜입니다. 전송중인 데이터를 암호화하고 시퀀스 번호와 타임 스탬프의 조합을 사용하여 각 데이터 전송의 고유성을 보장함으로써 재생 공격을 방지합니다.

    재생 공격을 방지하는 데 타임 스탬프가 어떤 역할을합니까?

    타임 스탬프는 재생 공격을 방지하는 데 중요한 역할을 할 수 있습니다. 각 데이터 전송에 타임 스탬프를 추가하면 각 전송이 고유하고 성공적으로 재생할 수 없는지 확인할 수 있습니다. 재생 전송이 감지되면 타임 스탬프를 기반으로 쉽게 식별하고 폐기 할 수 있습니다.

    재생 공격이 어떤 웹 사이트에서도 수행 될 수 있습니까?

    예, 재생 공격은 적절한 보안 조치없이 모든 웹 사이트에서 수행 될 수 있습니다. 그러나 재무 데이터 또는 개인 정보와 같은 민감한 정보를 전송하는 웹 사이트는 특히 공격에 취약합니다.

    재생 공격이 일반적입니까?

    다른 유형의 사이버 공격만큼 흔하지는 않지만 재생 공격이 발생하며 심각한 결과를 초래할 수 있습니다. 따라서이를 방지하기 위해 조치를 취하는 것이 매우 중요합니다.

    재생 공격을 방지하기위한 몇 가지 모범 사례는 무엇입니까?

    재생 공격을 방지하기위한 일부 모범 사례에는 보안 통신 프로토콜 사용, 타임 스탬프 또는 일련 번호 시행, 일회성 비밀번호 또는 임의의 숫자 사용, 네트워크 트래픽의 주기적 모니터링 및 감사가 포함됩니다. 또한 보안의 중요성에 대해 사용자를 교육하고 안전한 비밀번호를 사용하도록 장려하면 재생 공격을 방지 할 수 있습니다.

    이 개정 된 출력은 다른 문구 및 문장 구조를 사용하면서 원래 의미를 유지합니다

위 내용은 웹 사이트의 재생 공격을 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
2025 년에 가입 할 Top 21 개발자 뉴스 레터2025 년에 가입 할 Top 21 개발자 뉴스 레터Apr 24, 2025 am 08:28 AM

이 최고의 개발자 뉴스 레터와 함께 최신 기술 트렌드에 대해 정보를 얻으십시오! 이 선별 된 목록은 AI 애호가부터 노련한 백엔드 및 프론트 엔드 개발자에 이르기까지 모든 사람에게 무언가를 제공합니다. 즐겨 찾기를 선택하고 Rel을 검색하는 데 시간을 절약하십시오

AWS ECS 및 LAMBDA가있는 서버리스 이미지 처리 파이프 라인AWS ECS 및 LAMBDA가있는 서버리스 이미지 처리 파이프 라인Apr 18, 2025 am 08:28 AM

이 튜토리얼은 AWS 서비스를 사용하여 서버리스 이미지 처리 파이프 라인을 구축함으로써 안내합니다. ECS Fargate 클러스터에 배포 된 Next.js Frontend를 만들어 API 게이트웨이, Lambda 기능, S3 버킷 및 DynamoDB와 상호 작용합니다. th

CNCF ARM64 파일럿 : 충격 및 통찰력CNCF ARM64 파일럿 : 충격 및 통찰력Apr 15, 2025 am 08:27 AM

CNCF (Cloud Native Computing Foundation), Ampere Computing, Equinix Metal 및 Actuated 간의 공동 작업 인이 파일럿 프로그램은 CNCF Github 프로젝트를위한 ARM64 CI/CD를 간소화합니다. 이 이니셔티브는 보안 문제 및 성과를 다룹니다

GO와 함께 네트워크 취약성 스캐너 구축GO와 함께 네트워크 취약성 스캐너 구축Apr 01, 2025 am 08:27 AM

이 GO 기반 네트워크 취약점 스캐너는 잠재적 보안 약점을 효율적으로 식별합니다. 속도를 위해 Go의 동시성 기능을 활용하고 서비스 감지 및 취약성 일치를 포함합니다. 그 능력과 윤리를 탐색합시다

See all articles

핫 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 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

메모장++7.3.1

메모장++7.3.1

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

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기