首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防御网站被网络钓鱼所滥用

防御网站被网络钓鱼所滥用
EN

Security用户
提问于 2010-11-12 14:43:07
回答 3查看 518关注 0票数 11

假设您有一个网站,并且您正在使用某个returnUrl URL参数将用户重定向回他登录或编辑用户区域中某些记录的页面。有没有一些标准的方法来检查returnUrl是否与web应用程序位于同一台服务器上?

到目前为止,我已经了解到,atacker可以通过两种方式将用户重定向到其他地方,并且可以执行以下操作来防止这些攻击:

  1. 攻击者在参数(http://evil.com/)中提供整个URL -在这里可以检查参数是否包含http(s)://ftp://
  2. 如果协议缺失,浏览器会自动添加该协议,因此攻击者可以提供类似//evil.com//numeric_ip_address之类的内容,并且它也会将用户重定向到服务器之外--在这里,您仍然可以检查URL是否以//开头。

还有其他方法来编码URL地址吗?如果只检查前两种情况,是否可以确保参数不会被滥用?

EN

回答 3

Security用户

回答已采纳

发布于 2010-11-12 16:02:47

您可以这样做的一种方法是在参数传递给用户时对其进行加密,该参数具有存储在服务器上的密钥(同时为了更好的保护,请考虑添加一个HMAC)。然后,当用户提交表单时,解密参数(如果使用HMAC )并使用它重定向用户。

我见过一些情况,即URL只是被混淆了(base64编码等)。这可能会阻止偶然的攻击者,但我不会依赖它,因为一个坚定的攻击者很可能会想出所使用的方案。

票数 6
EN

Security用户

发布于 2010-11-12 15:03:00

您可以将您的网站的前缀添加到url中,这样它们就可以转到:

example.com/login.php?returnurl=profiles/home.php

在页面中,您将让它返回到http://example.com/并添加返回的URL。(http://example.com/RETURNURLHERE)

票数 4
EN

Security用户

发布于 2012-02-19 17:11:10

攻击用户/浏览器或混淆URL/重定向的方法有很多。疯狂的方式会使你的大脑受伤,让你问为什么会起作用?!(请参阅:http://code.google.com/p/browsersec/)一般来说,在验证输入时,不要试图修复数据,如果数据不是您所期望的,或者不是您所需要的格式,则将其丢弃。记住默认拒绝,这只是另一个例子。

与任何事情一样,您如何实现这一点,取决于您的需求。在处理重定向时,您还应该注意实现缺陷,这些漏洞还可能进一步打开漏洞,如HTTP响应拆分、头注入等。

我通常建议将目标白名单和请求签名相结合(使用HMAC,类似于Rory的建议)。在预先形成请求签名时,我喜欢使目标在URI中可见。例如:

http://yoursite.com/login.php?returnurl=welcome.php&hash=yourlonghashhere

这使得用户可以在请求应该去的地方有一点可行性,并且允许更精明的用户可能注意到自己的钓鱼或其他攻击。

当重定向即将发生时:

  1. 对照哈希验证“返回护士”
  2. 确认“返程托儿所”是白色的
  3. 然后预置重定向。

如果验证过程的任何步骤失败,要么重定向到默认/主页,要么拒绝请求。

以下是更多的资源:

票数 2
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档