[問題] get時保護php資料

看板Ajax作者 (衰神)時間11年前 (2012/07/27 03:41), 編輯推噓14(14032)
留言46則, 9人參與, 最新討論串1/1
在網頁中使用jquery的get來對php拿資料時 要怎樣才能避免直連php時被看到資料 如: $.get('example.php',function(data){........ 直接連 mydomain/example.php時,預設要傳的資料就會被看到 這樣一來別人就可以輕易使用我的資料 有什麼方法可以只限制特定網頁的ajax可存取?? 謝謝各位大神的回答^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.242.15.4

07/27 04:06, , 1F
就加參數去判定
07/27 04:06, 1F

07/27 07:23, , 2F
添加特定的POST資料或增加額外的request headers
07/27 07:23, 2F

07/27 07:24, , 3F
後端php則要先檢查 有才吐資料
07/27 07:24, 3F

07/27 09:25, , 4F
在主頁設定session,在example.php檢查session。
07/27 09:25, 4F

07/27 09:26, , 5F
基本上沒辦法徹底預防,只能雖為檔一檔而已
07/27 09:26, 5F

07/27 09:27, , 6F
1、2講的參數、request headers別人都可以偽造
07/27 09:27, 6F

07/27 10:18, , 7F
原po知道不管怎樣原使用者都可以看到你ajax的內容嗎?
07/27 10:18, 7F

07/27 19:59, , 8F
如果有安全需要 就照登入使用者的作法去檢查啊
07/27 19:59, 8F

07/27 19:59, , 9F
單純就"ajax才能取得資料"來看就是加參數或header
07/27 19:59, 9F

07/27 20:00, , 10F
和cookie/session並用則可以限制該看到的人才能看到
07/27 20:00, 10F

07/27 23:37, , 11F
這是權限問題,你可以在example.php做session的驗證
07/27 23:37, 11F

07/27 23:37, , 12F
如果你想得到發送來的頁面URL,就取得在驗證就好,不難
07/27 23:37, 12F

07/28 00:42, , 13F
傳輸的資料加密,使用者愛直接看就讓他看。反正也看不懂
07/28 00:42, 13F

07/28 03:38, , 14F
一各簡單的做法,ajax傳送到臨時處理頁,處理頁判斷連結的
07/28 03:38, 14F

07/28 03:40, , 15F
網址是否來自允許的頁面,允許就傳回真正的路徑,ajax收到
07/28 03:40, 15F

07/28 03:40, , 16F
後,再以收到的當成參數去連結就好了
07/28 03:40, 16F

07/28 15:27, , 17F
樓上的這個做法是filter,但是這樣最後送的回去 ?
07/28 15:27, 17F

07/28 23:05, , 18F
可以,第一次的ajax呼叫只是要用來取得正確網址紀錄在變數
07/28 23:05, 18F

07/28 23:08, , 19F
得到變數後,就變成$.get(aaa,fun...,
07/28 23:08, 19F

07/28 23:32, , 20F
簡單寫一各,猜猜呼叫哪各網頁http://tinyurl.com/ckfo57u
07/28 23:32, 20F

07/29 00:15, , 21F

07/29 00:25, , 22F
感覺上如果只是少數程式要檔,或許可以考慮在作用頁面
07/29 00:25, 22F

07/29 00:26, , 23F
判斷url,應該是最快速的處理做法,不過URL能不能偽造
07/29 00:26, 23F

07/29 00:26, , 24F
呢 ?
07/29 00:26, 24F

07/29 10:59, , 25F
看了一下附的連結測試了一下, 在 chrome console 底下
07/29 10:59, 25F

07/29 11:01, , 26F
不是很有隱藏的效果. cur.html 直接顯示出來外, showurl
07/29 11:01, 26F

07/29 11:01, , 27F
.asp 的 header 只要仿造 Referer 就過關了
07/29 11:01, 27F

07/29 11:03, , 28F
檢查其他的也是逐一仿造遲早會攻破 :(
07/29 11:03, 28F

07/29 11:05, , 29F
是覺得真要保護些什麼就不該相信使用者端送來的東西:
07/29 11:05, 29F

07/29 11:05, , 30F
死心吧,Client端是完全透明的,只是容不容易的問題而已
07/29 11:05, 30F

07/29 11:05, , 31F
ex: 絕不貪圖便宜直接使用使用者端傳來的 TRUE AND TRUE
07/29 11:05, 31F

07/29 11:06, , 32F
來操作 sql, 即使你用 base64 有的沒得加密過.
07/29 11:06, 32F

07/29 11:07, , 33F
ex: 做計時類小遊戲回傳結果覺不相信使用者端傳來的秒數
07/29 11:07, 33F

07/29 11:07, , 34F
而是應該開始時候送一次資訊回 server, 容許回傳的
07/29 11:07, 34F

07/29 11:08, , 35F
時間則是你表訂的加個幾秒.
07/29 11:08, 35F

07/29 11:14, , 36F
覺得應該要先評估資料的重要性, 畢竟攻防上你要防禦的
07/29 11:14, 36F

07/29 11:15, , 37F
成本一定遠高於攻擊方(你都把一半的兵棋圖放在對手家了)
07/29 11:15, 37F

07/29 11:16, , 38F
保護 TRUE AND TRUE 不如用正規些的 sql 處理方式,
07/29 11:16, 38F

07/29 11:17, , 39F
金融類的考慮用其他程式碼已外的方式保護, 好比說你只
07/29 11:17, 39F

07/29 11:17, , 40F
服務特定幾家, 他們要使用你的系統就必須繳1000萬的
07/29 11:17, 40F

07/29 11:18, , 41F
保證金有的沒得(混淆你的伺服器能獲得的利益小於1000萬)
07/29 11:18, 41F

07/29 11:29, , 42F
想了想覺得自己舉的例子不是很好 ~"~||
07/29 11:29, 42F

07/29 11:30, , 43F
但大致上的意思是說有時候跳脫"保護"的思考方式會有更
07/29 11:30, 43F

07/29 11:31, , 44F
佳解. (不小心就推了快一頁..)
07/29 11:31, 44F

08/01 02:37, , 45F
資料本身沒有非常貴重,只是不太喜歡讓人直接連結
08/01 02:37, 45F

08/01 02:38, , 46F
目前用session+帶參數的方式來解決就夠用了
08/01 02:38, 46F
文章代碼(AID): #1G4PrhzG (Ajax)
文章代碼(AID): #1G4PrhzG (Ajax)