作者dreamboxer (陌生人)
看板Flash
標題Re: [問題] 怎麼防止不透過我寫的swf.直接傳值給php?
時間Wed Jul 16 00:48:45 2008
※ 引述《a149851571 (yem)》之銘言:
: 了解到flash不能和伺服器的資料庫連結,只能透過asp或php之類的才能存入資料
: 所以小弟也就開始學習php..但是最近想到了一個問題..
: 假如我寫了一個swf,傳值給php,php再存入資料庫
事實上,你用 swf 呼叫 php,不用反組譯 swf 就可以知道你的 php 接收了甚麼參數。
swf 呼叫 php 的方式其實就和你的瀏覽器打上 php 的網址是一樣的。
(就算是用Post的,其實我也可以看到你Post了甚麼,然後用程式去模擬Post動作...)
: 那如果有心人士反組譯了我的swf,知道該傳什麼給php
: 那就有可能被以作弊的方式,達到他想要的目的(而不是照著我的規則走)
這裡有一個重點,作弊的方式,是甚麼方式?
又你想要保護的資料是甚麼?保護的對象是誰?是使用者還是Server?
而不單單是要怎麼保護 "我傳給php的值"...
提供一些解法:
1. 我要保護我 php?param= 後面的參數:
最直覺的,在Flash中用一組動態的Key加密後傳給php,再由php解密。
只是我覺得反正你那些值到後來也是要顯示在Flash裡面...何必那麼麻煩...
這只能防防小人,真正要防Hacker還是防不了...
(不過我想Hacker應該也沒啥興趣駭這種無聊的東西)
用 AS3 + Encryption 搜尋應該有一些東西參考,我個人是沒作過用AS3加密...
2. 我要保護我的Server不會被人用機器人攻擊。(例如討論版被瘋狂灌水)
例用 CAPTCHA (認證圖),由Server產生一張圖給Flash,
然後要使用者輸入圖上顯示的數字,確認是"人眼"看到圖才能繼續貼文的動作。
搜尋 php + CAPTCHA 應該有一些免費的解決方案可以用。
3. 我要防止User跳過某些步驟。
利用 Session 將資料寫在 Server 端。和寫網頁一樣,翻翻Php的Session那章吧~XD
4. 我要保護我的資料庫不會被 SQL Injection。
只要記住一點,所有User傳入Server的參數都一定要用Server端的程式(即Php)檢查!
例如,我輸入了電話,裡面不應該出現中文,或是長度太長(電話不可能大於20碼)。
資料存進資料庫之前要用 mysql_real_escape_string 跳脫字元一下...
這也和寫網頁程式的觀念一樣。搜尋 SQL Injection 有一大堆討論。
5. 我要保護資料傳遞過程不被竊聽。
使用 SSL (即https) 進行網頁的動作,但要注意的是,用SSL是防止在"傳輸過程"
不被第三者(即Server和用戶兩者"以外")竊聽,而不是資料到了Server和用戶的"面"
前還加密的(加密解不開是要怎麼看)。Flash可以接收https傳進去資料。
以上是在網頁裡面很常用的方法... 其實對Flash而言其實沒啥兩樣...@@
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.115.171.19
推 ybite:推一下 07/16 00:59
推 a149851571:大大每次講解都很精闢! 推推推 07/16 01:02
→ a149851571:其實我是看到網路上這個遊戲.. 07/16 01:03
→ a149851571:想說如果是flash做的..那安全性一定很薄弱... 07/16 01:04
→ a149851571:很容易就被人作弊!!! 07/16 01:05
→ dreamboxer:看到鬼...我用pcman開竟然不用登入就可以玩遊戲了...XD 07/16 01:17
→ dreamboxer:有興趣可以看看我的這篇: 07/16 01:21
推 ComicMan:大推一下 07/16 02:03
推 no1kk:推... 07/16 11:06
※ 編輯: dreamboxer 來自: 59.115.164.227 (07/21 21:11)