스푸핑된 양식을 만드는 것은 URL을 위조하는 것만큼 쉽습니다. 결국 양식 제출은 브라우저가 수행한 HTTP 요청일 뿐입니다. 요청 형식의 일부는 양식에 따라 다르며 요청의 일부 데이터는 사용자로부터 제공됩니다.
대부분의 양식은 상대 URL 주소를 사용하여 작업 속성을 지정합니다.
<form action="process.php" method="POST">
양식이 제출되면 브라우저는 작업에 지정된 URL을 요청하고 현재 URL 주소를 사용하여 상대 URL을 찾습니다. 예를 들어 이전 양식이 http://www.php.cn/ 요청에 대한 응답으로 생성된 경우 사용자가 양식을 제출한 후에 URL 주소 http://www.php.cn/이 요청됩니다.
이것을 알면 양식이 어디에나 배치될 수 있도록 절대 주소를 지정할 수 있다고 생각하기 쉽습니다.
아아앙
이 양식은 어디에든 배치할 수 있으며 이 양식을 사용하여 생성된 제출물은 원본 양식으로 생성된 제출물과 동일합니다. 이를 인지한 공격자는 절대 URL 주소로 액션을 변경하면서 페이지의 소스 파일을 보고 자신의 서버에 저장할 수 있습니다. 이러한 방법을 사용하면 공격자는 최대 필드 길이 제한 제거, 로컬 유효성 검사 코드 제거, 숨겨진 필드 값 변경, 보다 유연한 목적을 위해 요소 유형 다시 작성 등 양식을 임의로 변경할 수 있습니다. 이러한 변경 사항은 공격자가 데이터를 서버에 제출하는 데 도움이 되며 프로세스가 매우 간단하고 쉽기 때문에 공격자가 전문가가 아니어도 이 작업을 수행할 수 있습니다.
스푸핑된 형태의 공격은 예방할 수 없으며, 이것이 다소 이상해 보일 수도 있지만 실제로는 사실입니다. 하지만 이것에 대해 걱정할 필요가 없습니다. 입력을 올바르게 필터링하면 사용자는 제출 방법에 관계없이 규칙을 따라야 합니다.
이 기술을 실험해 보면 대부분의 브라우저가 이전 페이지의 주소를 식별하기 위해 HTTP 헤더에 Referer 메시지를 포함한다는 것을 알 수 있습니다. 이 예에서 Referer 값은 양식의 URL 주소입니다. 이에 속지 말고 이를 사용하여 양식 제출과 스푸핑된 양식 제출을 구별하세요. 다음 섹션의 데모에서는 HTTP 헤더도 위조하기가 매우 쉽고 Referer를 사용하여 결정하는 방법이 잘 알려져 있음을 알 수 있습니다.
위 내용은 PHP 보안 사기 양식 제출 내용이며, 자세한 내용은 PHP 중국어 홈페이지(www. php.cn)!