PHP 防止站外提交

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   strong   

方法一:原理和防盜鏈一樣,都是檢查資訊來源的http 頭.如果不是本站網域名稱就阻止.(當然,這不是絕對的,因為referer是可以偽造的)

<?$servername=$HTTP_SERVER_VARS[‘SERVER_NAME‘]; //擷取本站網域名稱$sub_from=$HTTP_SERVER_VARS["HTTP_REFERER"]; //擷取來源的referer$sub_len=strlen($servername); //計算本站網域名稱的長度$checkfrom=substr($sub_from,7,$sub_len); //截取來源網域名稱if($checkfrom!=$servername){ //假如截取的來源網域名稱不等於本站網域名稱,則終止.    echo("資料來源有誤!請從本站提交!");    exit;}?>

 

處理遠端資料表單提交更好的方式是,根據一個惟一的字串或時間戳記產生一個令牌,並將這個令牌放在會話變數和表單中。提交表單之後,檢查兩個令牌是否匹配。如果不匹配,就知道有人試圖從表單的遠程副本發送資料。

要建立隨機的令牌,可以使用 PHP 內建的 md5()、uniqid() 和 rand() 函數,如下所示

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

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.