我在为我的电子商务网站寻找CSRF。我已经为表单实现了一个基于令牌的方法。链接是否可以链接到csrf?
我有一个结帐链接在我的网站的篮子页面,只是链接到地址页面。一旦在地址页面上进行了各种检查以确保用户登录并且在他们的篮子中有物品。然后根据存储在会话中的user_id提取用户现有地址。
我的问题是,在结帐链接中是否有任何漏洞?它不以任何方式改变任何数据。
我在为我的电子商务网站寻找CSRF。我已经为表单实现了一个基于令牌的方法。链接是否可以链接到csrf?
我有一个结帐链接在我的网站的篮子页面,只是链接到地址页面。一旦在地址页面上进行了各种检查以确保用户登录并且在他们的篮子中有物品。然后根据存储在会话中的user_id提取用户现有地址。
我的问题是,在结帐链接中是否有任何漏洞?它不以任何方式改变任何数据。
如果您只能从请求中检索数据,那么它对CSRF是安全的。
CSRF是一种攻击,诱使用户发出改变请求(发表评论(可能是垃圾邮件!),购买东西,投票支持某事,更改他们的账户信息等)。
[CSRF](http://cwe.mitre.org/data/definitions/352。HTML)并不仅限于有副作用的请求,但是,这样的请求相当有价值。 – Gumbo
CSRF不是“易受攻击”或“不易受攻击”类型的漏洞。更多的是“可以被利用吗?”。让我详细说明一下。
CSRF背后的全部理念是强制用户(通过任何可用方式)以编程方式执行更改(最好未经他们同意)。做到这一点的办法是找到你试图攻击具有显著要求该网站的一部分,这可以是:
GET
参数(在这一点上,你可以使用img
标签全部完成诱骗用户的浏览器到触发它)CSRF,其本身是罕见的(大多数网站使用POST
了很多的事情,这是非常罕见的不得不求助于图像标记)。尽管可以找到变体,但更可能的组合是CSRF + XSS。
防御CSRF的关键不是“我的链接可能被黑客攻击!!!”。此外,请确保您使用GET
可以重播的请求具有幂等性(即不会导致状态更改),并且其他任何内容都使用一次性令牌来防止自动重播。
[Idempotence](http://tools.ietf.org/html/rfc2616#section-9.1.2)并不意味着它没有副作用:“方法也可以具有”幂等性“的属性,除了错误或过期问题),N> 0相同请求的副作用与单个请求相同。“ – Gumbo
非常感谢,这有助于我更好地理解概念 –
@Gumbo:正确。我会重新词组。 –
这一切归结于您的代码。没有更多细节,无法正确回答这个问题。你可以有一些东西(愚蠢的),比如'if(isset($ _ REQUEST ['dothis'])){eval($ _ REQUEST ['dothis']); }'。即使这个'dothis'是一个隐藏/未发布的参数,它仍然是一个可怕的漏洞。 –
那么,如果结账页面被要求发生什么呢?该页面上是否存在一些不需要用户操作但仍会导致服务器端影响的自动操作? – Gumbo
我想我可能正在努力理解csrf的概念。我现在明白了,我可以看到,我认为可能没有csrf漏洞。 –