인증된 사용자가 의도하지 않은 요청(생성, 삭제, 수정 등)을 보내도록 유도할 수 있는 공격. 이 공격은 사용자가 다른 웹사이트(공격자가 제어하는)에 접속했을 때 악의적인 요청이 실행되도록 만든다. 요청에 대해서 사용자가 의도한 대로 작성되고 전송된 것인지 확인하지 않는 경우 발생.
웹 등에서 개인을 확인하기 위한 수단의 하나이다. 토큰에는 크게 두 가지 종류가 있는데, 무작위의 값을 생성하여 정보가 담기지 않는 일반 토큰과 특정 데이터를 담아 생성하는 클레임 기반 토큰이 있다. 클레임 기반 토큰중에 가장 대표적인 것은 JSON 웹 토큰(JWT)이다.
비박스 CSRF (Change Password) 로그인한 사용자의 비밀번호를 변경 신청하는 페이지
<h1>CSRF (Change Password)</h1>
<p>Change your password.</p>
<form action="/bWAPP/csrf_1.php" method="GET">
<p><label for="password_new">New password:</label><br>
<input type="password" id="password_new" name="password_new"></p>
<p><label for="password_conf">Re-type new password:</label><br>
<input type="password" id="password_conf" name="password_conf"></p>
<button type="submit" name="action" value="change">Change</button>
</form>
<br>
서버에 전달되는 값
http://bee.box/bWAPP/csrf_1.php?password_new=1234&password_conf=1234&action=change
단순 비밀번호를 변경하는 페이지인데 뭐가 문제일까?
인증을 하지 않기 때문. 기존 비밀번호 인증 혹은 2차 본인확인 인증을 해야하지만 그렇게 하고 있지 않고, 그렇기 때문에 새로운 값만 입력하면 비밀번호를 쉽게 수정할 수 있다.
그럼 그 요청을 하게 CSRF를 이용하여 비밀번호를 2345로 변경하는 스크립트 코드를 만들어보면
로그아웃 후 2345로 로그인하면 로그인 되는걸 확인 할 수 있다.
구글에서 개발한 자동화된 프로그램이나 로봇이 웹사이트의 폼을 자동으로 제출하는 것을 방지하기 위한 보안 기술 중 하나이다. 이는 주로 스팸 봇이나 악의적인 봇에 의한 자동 가입, 댓글 스팸, 폼 스팸 등을 방지하는 데 사용된다. reCAPTCHA는 사용자에게 간단한 인증 과정을 제공하여 사람임을 확인하고, 로봇이나 자동화된 스크립트가 아닌지를 확인한다.
CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)
사용자가 웹사이트에 액세스하거나 어떤 작업을 수행하기 위해 이미지에 포함된 텍스트를 입력하는 등의 작업을 수행하여 자동화된 프로그램이 아니라는 것을 증명해야 한다. 사용자가 올바른 텍스트를 입력하면, 이는 사람임을 확인하는 데 사용된다.
Invisible reCAPTCHA:
사용자가 웹사이트를 방문할 때 자동으로 실행되며, 사용자가 사람인지 로봇인지를 판별하기 위한 보이지 않는 보안 검증 프로세스다. 보통 사용자의 동작 패턴 및 사용 환경을 분석하여 로봇인지를 감지하고, 사용자에게 추가적인 인증을 요청할 수 있다.