作者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