新足迹

 找回密码
 注册

精华好帖回顾

· 回国美食集锦陆续更新ing——147楼开始新一轮更新,149楼新添羊肉泡馍 (2010-11-22) crossrainbow · 2015 奔驰 c250 w205 安装 CarPlay 模块 (2019-3-30) lihe1314
· 半月谈10月--故剑情深 (2011-10-14) mlstring · 投资理财系列之1养 老 金 (2008-8-7) wangjing7614
Advertisement
Advertisement
查看: 1284|回复: 9

Intranet的application需要注意CSRF吗 [复制链接]

特殊贡献奖章

发表于 2011-1-10 13:45 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
今天同事说我写的ajax code有问题:

我的ajax代码call了一个这样的地址xxxx/deleteabc?abc_id=80.在deleteabc这个controller里面有个权限检查,看用户能不能做这个action。自认为是够安全了,因为只有login的用户才能访问这个地址,而且有权限删除这个abc_id的用户才能delete。

同事说有CSRF的问题。 其他网站可能会包含一个这样的html代码”<img src="xxxx/deleteabc?abc_id=80" />“,我们的用户如果访问了就可能把这个abc删除了。

(paopaobing(66)) ,有这个必要吗?
什么情况下会有人用CSRF来黑你?

CSRF:Cross-site request forgery, also known as a one-click attack or session riding and abbreviated as CSRF ("sea-surf"[1]) or XSRF, is a type of malicious exploit of a website whereby unauthorized commands are transmitted from a user that the website trusts.[2] Unlike cross-site scripting (XSS), which exploits the trust a user has for a particular site, CSRF exploits the trust that a site has in a user's browser.

[ 本帖最后由 kr2000 于 2011-1-10 13:47 编辑 ]
Advertisement
Advertisement

发表于 2011-1-10 14:00 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-1-10 13:45 发表
今天同事说我写的ajax code有问题:

我的ajax代码call了一个这样的地址xxxx/deleteabc?abc_id=80.在deleteabc这个controller里面有个权限检查,看用户能不能做这个action。自认为是够安全了,因为只有login的用户才能访问 ...


你同事是对的。

http get只能用在retrieval的情况下,其他的update/delete/create必须用http post,作pre-authentication,或者做一次,用session存了结果,为以后用。还可以进一步验证referrer,

N久之前有这种病毒,侵入一个cms,用http get删了很多records.

classic asp developer很喜欢用action,好像足迹也喜欢这么做,但注意做非read其他操作的时候,要验证身份,这比较重要。

评分

参与人数 2积分 +9 收起 理由
澳贼 + 4 看见双胸就加分!
kr2000 + 5 谢谢奉献

查看全部评分

发表于 2011-1-10 14:07 |显示全部楼层
此文章由 bulaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bulaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-1-10 13:45 发表
今天同事说我写的ajax code有问题:

我的ajax代码call了一个这样的地址xxxx/deleteabc?abc_id=80.在deleteabc这个controller里面有个权限检查,看用户能不能做这个action。自认为是够安全了,因为只有login的用户才能访问 ...


理论上是有可能的。CSRF的案例比XSS少得多,但杀伤力大。有些著名的案例是Internet Banking的早期,有人就这样被人把钱从银行转走了。

CSRF的执行人往往看不到执行结果,因为结果是被送到用户的browser那里去的,带CSRF的exploit的网站不能看到,所以一般用来执行破坏性的行为,比如删除用户ID

你这个例子里这个风险很小,实在有必要的话加一个动态的session id就解决了

评分

参与人数 1积分 +5 收起 理由
kr2000 + 5 感谢分享

查看全部评分

特殊贡献奖章

发表于 2011-1-10 14:26 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-1-10 14:00 发表


你同事是对的。

http get只能用在retrieval的情况下,其他的update/delete/create必须用http post,作pre-authentication,或者做一次,用session存了结果,为以后用。还可以进一步验证referrer,

N久之前有这种病毒,侵入一 ...

我刚跟他说,能用post不?人家说别人照样可以用javascript来执行你的action。
我知道他说的是对的,但一般的用于内部的系统,非网站需要这么注意吗?象老布说的,风险非常小。
解决起来也不是太容易,至少我一下子想不到有什么快捷的方法

发表于 2011-1-10 14:40 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 kr2000 于 2011-1-10 14:26 发表

我刚跟他说,能用post不?人家说别人照样可以用javascript来执行你的action。
我知道他说的是对的,但一般的用于内部的系统,非网站需要这么注意吗?象老布说的,风险非常小。
解决起来也不是太容易,至少我一下子想不到有什么快 ...


只要你del/update操作的url需要authentication,你就是安全的,至于他们login之后想做什么,那是他们自己问题,不是你的问题。

注意把这些行为和credential log一下,为以后找人算账有根据。

发表于 2011-1-10 15:13 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Assume my webpage doesn't have external links, How to cross-site forgery?

Users login websiteA (mywebsite) with valid user_name / password,
Didn't close down the webpage, goes to another website B,
Website B runs some actions (xxxx/deleteabc?abc_id=80) to mywebsite

If this is the only scenario,
Firstly, it's unlikely, --- website B must know my actions,  
Secondly, we can check the referrer HttpRequest.UrlReferrer
And thirdly, of couse, set the session to expire (10 mins?)


Back to LZ's question
Our internal website was required to pass the penetration test (including CSRF)--conducted by a security company.
What we done is: check the HttpRequest.UrlReferrer, set the login session to expire. The risk may be still there but the risk level is very low.

[ 本帖最后由 典 于 2011-1-10 14:25 编辑 ]

评分

参与人数 1积分 +5 收起 理由
kr2000 + 5 解释很合理

查看全部评分

Advertisement
Advertisement

发表于 2011-1-10 15:28 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-1-10 13:40 发表


只要你del/update操作的url需要authentication,你就是安全的,至于他们login之后想做什么,那是他们自己问题,不是你的问题。

注意把这些行为和credential log一下,为以后找人算账有根据。 ...


Not really...
The issue is: some other pages can "borrow (or steal or ...)" the credntial to do leagal actions. How do we know the credential is a real credential?

[ 本帖最后由 典 于 2011-1-10 14:30 编辑 ]

发表于 2011-1-10 15:44 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-1-10 15:28 发表


Not really...
The issue is: some other pages can "borrow (or steal or ...)" the credntial to do leagal actions. How do we know the credential is a real credential?


if we don't believe credential, what else should we believe

发表于 2011-1-10 16:06 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2011-1-10 14:44 发表


if we don't believe credential, what else should we believe


As you mentioned ealier,.. with referrer....Only trust credential from my website....

发表于 2011-1-10 16:20 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 于 2011-1-10 16:06 发表


As you mentioned ealier,.. with referrer....Only trust credential from my website....


OK, that's a good one too, yes, referrer is valid. but I have scenarios that referrer is not always available(null instead), but if it is, it's normally regarded as good one.

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部