>  기사  >  백엔드 개발  >  사이트 외부에서 양식을 원격으로 제출하는 것을 방지하는 PHP 방법입니다. PHP에서 양식을 제출하는 방법입니다.

사이트 외부에서 양식을 원격으로 제출하는 것을 방지하는 PHP 방법입니다. PHP에서 양식을 제출하는 방법입니다.

WBOY
WBOY원래의
2016-07-29 08:53:401332검색

이 글은 주로 사이트 외부에서 양식을 원격으로 제출하는 것을 방지하는 방법을 소개합니다. 세션과 인증 코드를 통해 제출을 필터링하는 방법을 예시로 보여줍니다. 매우 실용적입니다.

예제에서는 사이트 외부의 원격 양식 제출을 방지하기 위해 PHP를 사용하는 방법을 설명합니다. 참고용으로 공유하고 싶습니다. 구체적인 구현 방법은 다음과 같습니다.

일반적으로 웹마스터가 양식을 제출하지 못하도록 막는 것은 양식을 열거나 데이터를 제출할 때마다 확인을 위해 토큰을 추가하는 것과 같습니다. 인증 코드 방법은 다음과 같습니다. 사이트 외부에서 원격으로 양식을 제출하는 것을 방지하는 몇 가지 예를 살펴보겠습니다.

예시 1: 제출 페이지를 열 때마다 토큰을 생성하여 세션에 저장합니다. 양식이 제출되면 현재 토큰 값이 세션과 일치하는지 판단합니다. 이는 정상적인 제출이며, 그렇지 않으면 유효하지 않은 제출입니다.

구체적인 코드는 다음과 같습니다.

<?<span>php     
</span><span>session_start</span><span>();     
     
</span><span>if</span> (<span>$_POST</span>['submit'] == "go"<span>){     
    </span><span>//</span><span>check token     </span><span>if</span> (<span>$_POST</span>['token'] == <span>$_SESSION</span>['token'<span>]){     
        </span><span>//</span><span>strip_tags     </span><span>$name</span> = <span>strip_tags</span>(<span>$_POST</span>['name'<span>]);     
        </span><span>$name</span> = <span>substr</span>(<span>$name</span>,0,40<span>);     
        </span><span>//</span><span>clean out any potential hexadecimal characters     </span><span>$name</span> = cleanHex(<span>$name</span><span>);     
        </span><span>//</span><span>continue processing....     </span>    }<span>else</span><span>{     
        </span><span>//</span><span>stop all processing! remote form posting attempt!     </span><span>    }     
}     
     
</span><span>$token</span> = <span>md5</span>(<span>uniqid</span>(<span>rand</span>(), <span>true</span><span>));     
</span><span>$_SESSION</span>['token']= <span>$token</span><span>;     
     
 </span><span>function</span> cleanHex(<span>$input</span><span>){     
    </span><span>$clean</span> = <span>preg_replace</span>("![\][xX]([A-Fa-f0-9]{1,3})!", "",<span>$input</span><span>);     
    </span><span>return</span><span>$clean</span><span>;     
}     
</span>?>     
<form action="<?php echo <span>$_SERVER</span>['PHP_SELF'];?>" method="post">     
<p><label <span>for</span>="name">Name</label>     
<input type="text" name="name" size="20" maxlength="40"/></p>     
<input type="hidden" name="token" value="<?php echo <span>$token</span>;?>"/>     
<p><input type="submit" name="submit" value="go"/></p>     
</form>

이 인증코드 방식도 다른 방식과 동일합니다. 아래의 간단한 예를 살펴보겠습니다

예 2: 인증 코드 추가

양식 제출 시 인증 코드를 추가하면 물 충전기가 데이터를 제출하는 것을 효과적으로 방지할 수 있습니다. 그러나 그래픽과 이미지 인식 프로그램이 더욱 강력해지면서 인증코드 인식이 계속 어려워지고 있으며, 일부 소규모 사이트에서는 이 방법을 사용하기도 합니다.

<span>if</span>(<span>$_POST</span>['vcode'] !=<span> get_vcode())
{
    </span><span>exit</span>('验证码校验失败,无法入库'<span>);
}</span>

구체적인 사례에 관심이 있는 독자들은 온라인에서 관련 검증 사례를 많이 찾을 수 있습니다.

원본 주소: http://www.manongjc.com/article/678.html

관련 자료:

php는 도메인 간 양식 제출을 방지합니다

교차 도메인 요청을 해결하기 위한 js jsonp 방법

php가 양식을 제출할 때 if($_POST[submit]) 및 if(isset($_POST[sub

php 다중 제출을 판단하세요) 제출 양식 처리 방법

새로 고침 없이 php ajax 제출 양식

위 내용은 양식 및 PHP 콘텐츠 제출을 포함하여 사이트 외부의 원격 양식 제출을 방지하는 PHP의 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

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