【问题标题】:How to prevent directly accessing assets on a site that requires authentication?如何防止直接访问需要身份验证的站点上的资产?
【发布时间】:2012-11-01 20:55:38
【问题描述】:

该公司的网站是用 PHP 编写的,但在 IIS7 上运行。

情况:未经身份验证的用户关注书签或手动输入页面的 url。如果用户尚未登录,则应将其重定向到登录。

当前状态 这有效,但仅适用于 PHP 页面。每个页面都包含检查活动会话的代码,如果未找到,则将用户重定向到登录页面。

需要解决的问题: 如果用户关注书签或手动输入非页面资产的 url(页面中的图标、excel 文档、图像、pdf 等),我们希望将用户重定向到签名在。

当用户直接访问非 PHP 资产时,我们如何检查活动会话?

换句话说,我们如何检查这样的 url 的活动会话:

https://www.mysecuresite.com/img/secretpicture.jpg?

【问题讨论】:

  • 廉价/肮脏/不可靠的方法:检查会话cookie是否存在。
  • @MarcB,是的,但如果他们要求的只是 /img/pic.jpg?有没有办法在 IIS 中针对每个 HTTP 请求执行此操作,并在没有会话时设置重定向规则?
  • @Vidbot:请联系您的服务器软件供应商以获取支持选项。他们应该可以告诉你。如果您找到他们,您可以在此处将其作为答案发布,以便下一个需要查找该答案的人可以找到答案(如果尚不存在)。
  • @vidbot: 不要对 iis 做很多事情,但它至少应该能够做类似于 mod-rewrite 在 apache 上所做的事情:检查 cookie 并根据其存在/不存在进行重定向.

标签: php iis-7 security


【解决方案1】:

不确定 IIS,对 Apache 有帮助,但是呃.. 我知道一些社交网络通过 PHP 链接他们的静态资产。

所以图片链接不会是直接的,而是:/getImage.php?id=secretimage

您可以先检查会话...但是,是的,需要对您的情况进行一些重构。

【讨论】:

  • 我很确定 OP 关心的是 IIS,而不是 Apache HTTPD。
  • 是的,这就是我在这里帮不上忙的原因,但希望他们能够访问源代码,甚至是初级 PHP 开发人员,他们会以这种方式重写资产请求。
  • 这是我们已经开始采用的方法,但是网站上有 13 年的链接(其中许多是硬编码的并且早于任何 CMS)。这突然成为问题的原因是我们计划在内部网络之外(对现场销售人员)开放对站点的访问。
  • 您的用户数据库是如何制作的?如果数据库在 Windows 域中,也许可以通过 LDAP 或其他方式自动验证用户身份。
猜你喜欢
  • 2016-12-24
  • 2014-04-27
  • 2015-05-14
  • 2018-06-20
  • 1970-01-01
  • 2016-07-04
  • 2020-03-30
  • 2016-07-21
  • 2011-09-01
相关资源
最近更新 更多