網頁

2012年11月19日 星期一

如何block submit form by Robots

最近maintain的一個網站一直被攻擊,但明明那位置要登入才能寫入,查了查原因,看來當初設計有問題,回應部分是不需要登入,但回應又設計成跟文章是一塊的,真是有夠怪,但這次重點在一直有機器人塞廣告進來,客戶不堪其擾,但又不想又要客戶看什麼鳥圖示鍵入文字,所以需求如下:
  1. 擋掉機器人
  2. 不要另外又要鍵入
查了查資料,真有聰明人寫出了一些方式,方法有兩種:
  1. 利用css中的display:none
  2. 利用javascript(但javascript關掉就沒用了)
方法1,利用css中的display:none,例如

<input name="check" type="text" value="" style="display:none" />

這是利用機器人看到input就會填滿,但display:none讓使用者看不到,所以在server端去檢查這變數是否被塞值,來判定是否是機器人,有值就跳掉。

方法2,利用javascript,例如

<form name="myform" method="post" action="empty.php">...</form>

<script type="text/javascript">
var NameInFormTag = "myform";
var ActionURL = "youwant.php";
eval("document."+NameInFormTag+".action='"+ActionURL+"'");
</script>


這樣讀完網頁後,實際要傳值的php存放在瀏覽器中,但機器人看到的是empty.php

實際用方法1,目前看起來還算ok

參考網址:
Protect Your Forms from Spam
One Way to Block Form Submission Robots

沒有留言:

張貼留言