作者ldkrsi (衰神)
看板Ajax
標題[問題] get時保護php資料
時間Fri Jul 27 03:41:26 2012
在網頁中使用jquery的get來對php拿資料時
要怎樣才能避免直連php時被看到資料
如:
$.get('example.php',function(data){........
直接連 mydomain/example.php時,預設要傳的資料就會被看到
這樣一來別人就可以輕易使用我的資料
有什麼方法可以只限制特定網頁的ajax可存取??
謝謝各位大神的回答^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.242.15.4
1F:推 Fantasywind:就加參數去判定 07/27 04:06
2F:推 mrbigmouth:添加特定的POST資料或增加額外的request headers 07/27 07:23
3F:→ mrbigmouth:後端php則要先檢查 有才吐資料 07/27 07:24
4F:推 LaPass:在主頁設定session,在example.php檢查session。 07/27 09:25
5F:→ LaPass:基本上沒辦法徹底預防,只能雖為檔一檔而已 07/27 09:26
6F:→ LaPass:1、2講的參數、request headers別人都可以偽造 07/27 09:27
7F:→ nenpow:原po知道不管怎樣原使用者都可以看到你ajax的內容嗎? 07/27 10:18
8F:推 mrbigmouth:如果有安全需要 就照登入使用者的作法去檢查啊 07/27 19:59
9F:→ mrbigmouth:單純就"ajax才能取得資料"來看就是加參數或header 07/27 19:59
10F:→ mrbigmouth:和cookie/session並用則可以限制該看到的人才能看到 07/27 20:00
11F:推 returnbool:這是權限問題,你可以在example.php做session的驗證 07/27 23:37
12F:→ returnbool:如果你想得到發送來的頁面URL,就取得在驗證就好,不難 07/27 23:37
13F:→ averywu:傳輸的資料加密,使用者愛直接看就讓他看。反正也看不懂 07/28 00:42
14F:→ minejel:一各簡單的做法,ajax傳送到臨時處理頁,處理頁判斷連結的 07/28 03:38
15F:→ minejel:網址是否來自允許的頁面,允許就傳回真正的路徑,ajax收到 07/28 03:40
16F:→ minejel:後,再以收到的當成參數去連結就好了 07/28 03:40
17F:推 returnbool:樓上的這個做法是filter,但是這樣最後送的回去 ? 07/28 15:27
18F:推 minejel:可以,第一次的ajax呼叫只是要用來取得正確網址紀錄在變數 07/28 23:05
19F:→ minejel:得到變數後,就變成$.get(aaa,fun..., 07/28 23:08
22F:推 returnbool:感覺上如果只是少數程式要檔,或許可以考慮在作用頁面 07/29 00:25
23F:→ returnbool:判斷url,應該是最快速的處理做法,不過URL能不能偽造 07/29 00:26
24F:→ returnbool:呢 ? 07/29 00:26
25F:推 Crow22312:看了一下附的連結測試了一下, 在 chrome console 底下 07/29 10:59
26F:→ Crow22312:不是很有隱藏的效果. cur.html 直接顯示出來外, showurl 07/29 11:01
27F:→ Crow22312:.asp 的 header 只要仿造 Referer 就過關了 07/29 11:01
28F:→ Crow22312:檢查其他的也是逐一仿造遲早會攻破 :( 07/29 11:03
29F:推 Crow22312:是覺得真要保護些什麼就不該相信使用者端送來的東西: 07/29 11:05
30F:推 LaPass:死心吧,Client端是完全透明的,只是容不容易的問題而已 07/29 11:05
31F:→ Crow22312:ex: 絕不貪圖便宜直接使用使用者端傳來的 TRUE AND TRUE 07/29 11:05
32F:→ Crow22312: 來操作 sql, 即使你用 base64 有的沒得加密過. 07/29 11:06
33F:→ Crow22312:ex: 做計時類小遊戲回傳結果覺不相信使用者端傳來的秒數 07/29 11:07
34F:→ Crow22312: 而是應該開始時候送一次資訊回 server, 容許回傳的 07/29 11:07
35F:→ Crow22312: 時間則是你表訂的加個幾秒. 07/29 11:08
36F:推 Crow22312:覺得應該要先評估資料的重要性, 畢竟攻防上你要防禦的 07/29 11:14
37F:→ Crow22312:成本一定遠高於攻擊方(你都把一半的兵棋圖放在對手家了) 07/29 11:15
38F:→ Crow22312:保護 TRUE AND TRUE 不如用正規些的 sql 處理方式, 07/29 11:16
39F:→ Crow22312:金融類的考慮用其他程式碼已外的方式保護, 好比說你只 07/29 11:17
40F:→ Crow22312:服務特定幾家, 他們要使用你的系統就必須繳1000萬的 07/29 11:17
41F:→ Crow22312:保證金有的沒得(混淆你的伺服器能獲得的利益小於1000萬) 07/29 11:18
42F:推 Crow22312:想了想覺得自己舉的例子不是很好 ~"~|| 07/29 11:29
43F:→ Crow22312:但大致上的意思是說有時候跳脫"保護"的思考方式會有更 07/29 11:30
44F:→ Crow22312:佳解. (不小心就推了快一頁..) 07/29 11:31
45F:→ ldkrsi:資料本身沒有非常貴重,只是不太喜歡讓人直接連結 08/01 02:37
46F:→ ldkrsi:目前用session+帶參數的方式來解決就夠用了 08/01 02:38