Php 如何防止直接访问需要身份验证的站点上的资产?

Php 如何防止直接访问需要身份验证的站点上的资产?,php,iis-7,security,Php,Iis 7,Security,该公司的网站是用PHP编写的,但运行在IIS7上 情况:未经验证的用户跟随书签或手动输入页面的url。如果用户尚未登录,则应将其重定向到登录 当前状态此功能有效,但仅适用于PHP页面。每个页面都包含用于检查活动会话的代码,如果未找到活动会话,则会将用户重定向到登录页面 需要解决的问题: 如果用户跟随书签或手动输入非页面资产的url(页面中的图标、excel文档、图像、pdf等),我们希望用户重定向以登录 当用户直接访问非PHP资产时,我们如何检查活动会话 换句话说,我们如何检查URL的活动会话,

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

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

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

需要解决的问题: 如果用户跟随书签或手动输入非页面资产的url(页面中的图标、excel文档、图像、pdf等),我们希望用户重定向以登录

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

换句话说,我们如何检查URL的活动会话,如下所示:


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

因此图像链接不是直接的,而是:/getImage.php?id=securimage


在那里,您可以先检查会话。。。但是,是的,在你的情况下需要一些重构。

廉价/肮脏/不可靠的方法:检查会话cookie的存在。@MarcB,是的,但是如果他们只请求/img/pic.jpg怎么办?是否有办法在IIS中对每个HTTP请求执行此操作,并在没有会话时设置重定向规则?@Vidbot:请与服务器软件供应商联系以获取支持选项。他们应该能告诉你。如果你找到了他们,你可以把它作为一个答案发布在这里,这样下一个需要查找的人就可以找到答案(如果还不存在)。@vidbot:不要对iis做太多,但它至少应该能够做一些类似于mod rewrite在apache上所做的事情:检查cookie并根据其存在/不存在进行重定向。我很确定OP关心的是IIS,而不是apache HTTPD。是的,这就是为什么我在这里帮不上忙的原因,但希望他们能够访问源代码,甚至是初级PHP开发人员,他们可以通过这种方式重写资产请求。这是我们开始采取的方法,但该网站上有13年的链接(其中许多是硬编码的,并且早于任何CMS)。这突然成为问题的原因是我们计划在内部网络之外(向现场销售人员)打开对网站的访问。您的用户数据库是如何建立的?如果数据库位于Windows域中,那么可以通过LDAP或其他方式自动对用户进行身份验证。