iT邦幫忙

0

有辦法讓Web表單只能由點擊送出嗎?

透過JavaScript,能夠讓Web表單即使不透過點擊送出,也能submit出去。這樣讓人有機會去寫一些機器人程式,很短的時間就可以送出表單。

我想知道,有什麼辦法可以做到確認user的確是按了那個送出鈕,或者能讓直接用submit()出來表單無效。

24
fillano
iT邦超人 1 級 ‧ 2009-04-26 09:56:39
最佳解答

駭客如果要大量送,他根本不用javascript,他直接送出POST請求就可以了。

提供幾個常見的做法,你可以參考:

  1. 最常見的是januslin說的,使用captcha。
  2. 利用activex、flash、java applet做submit,裡面埋好一些跟伺服器溝通的規則(額外加密、額外增加欄位、用另外的通訊方式與伺服器溝通等等)
  3. 利用spamer的機器人,比較少內建javascript引擎,使用伺服器動態產生的javascript來提高難度

第一個方法目前有一堆機器人可以利用OCR的方式來破解,所以不要用太簡單的方法來產生文數字。如果不考慮國外使用者及跨兩岸的使用者,用中文來做可以大幅提高破解難度。另外一種做法是出謎題,要使用者回答等。你可以參考幾個連結(主要是關於怎麼破解,也有一些是討論常見的captcha系統的破解難易度):
http://www.brains-n-brawn.com/default.aspx?vDir=aicaptcha
http://www.cs.sfu.ca/~mori/research/gimpy/
http://www.gudlyf.com/2004/06/07/wordpress-hack-authimage/
http://www.w3.org/TR/turingtest/
http://caca.zoy.org/wiki/PWNtcha
http://ejohn.org/blog/ocr-and-neural-nets-in-javascript/(John Resig的blog,提到有人用html5的canvas以及用javascript實作類神經網路演算法來做線上的OCR)

第二個方法常見銀行使用,不過需要額外開發。最常見的手法還是用activex,雖然這樣會限定使用者只能用IE,但是可以利用hook api等技術做到防側錄。優缺點就看自己的評估了。

第三個方法很有趣,不過如果spamer的機器人內建javascript引擎的話就擋不住了。

檢查與你互動的到底是人還是電腦,相關的議題可以用「杜林測試」、「Turing Test」的關鍵字找到很多資料。

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 2009-04-26 09:58:50 檢舉

阿,第三個方法可以參考這個網址:
http://phorum.study-area.org/index.php/topic,47720.0.html

fillano iT邦超人 1 級 ‧ 2009-04-26 11:39:26 檢舉

再補充一下:
captcha也可以用flash做,這樣也可以提高破解難度。php裡面有一些現成的產生swf的函數可以使用。asp、jsp應該也都有一些解決方案的。

之前我們家工程師也常常用程式取代人工去查詢一些網站的資料
應該是很多人都跟我們一樣在查
後來該網站就上了captcha了
真不夠意思...^_^

fillano iT邦超人 1 級 ‧ 2009-04-26 12:29:14 檢舉

我記得有一些online ocr的服務...也許可以拿來利用,哈哈。我記得幾年前google code上面有一些ocr專案,只要參數調一調,效果還不錯,配合curl就很好用。

chetbaker iT邦新手 3 級 ‧ 2009-04-27 11:03:41 檢舉

請各位幫忙看一下我的想法行不行得通,謝謝。

fillano iT邦超人 1 級 ‧ 2009-04-28 10:04:16 檢舉

你可以試一下阿?程式可以先用混淆器處理過,讓別人難以猜出邏輯,然後用base64編碼,再把字串做成陣列。陣列用join就可以組成字串,然後再用base64解碼,最後用eval來執行。(之前手動拆過別人做的XSS攻擊程式,他們保護的方式大概不出這些。只是可能用更多方法加密過。)

fillano iT邦超人 1 級 ‧ 2009-04-28 10:07:28 檢舉

如果不知道要用什麼混淆器,我建議可以用:
http://developer.yahoo.com/yui/compressor/

20
pcboy
iT邦高手 1 級 ‧ 2009-04-26 07:53:37

你是指被駭客入侵後, 駭客修改你的網頁, 插入 JavaScript 的情況下嗎 ?

答案是不行,
除非你要求使用者關閉瀏覽器的 JavaScript 支援功能
或你自己開發個瀏覽器, 要求對方使用

18
門神JanusLin
iT邦超人 1 級 ‧ 2009-04-26 08:25:38

Web多一個圖文驗證為必填的檢查動作

我要發表回答

立即登入回答