2012-10-04 51 views
2

我正在使用简单的服务0123'在在线发票上创建PDF版本。现在,客户端必须登录才能看到在线版本,但结果是,api服务无法访问它。我如何检测到pdf服务正在访问该站点,并因此无需密码?通过api检测对密码保护区域的访问

我以为$ _Server ['http_referrer']会这样做,但我没有任何运气。我甚至不确定变量是什么,所以无论何时页面被访问,我都有一个var_dump($ _ Server)通过电子邮件发送给我。当我进入页面时,它发送的很漂亮,但是当pdf生成时,没有运气。

任何想法?

感谢您的帮助!

回答

4

您需要识别用户。该服务的唯一方法似乎是将某些内容附加到pdf URL(GET参数)。

因此,在服务器端创建一些秘密,使用它签署用户标识,将其附加到impdf URL并根据请求使用您的秘密进行解析。您将最终获得可用于授权的用户标识。

+0

可能值得一提的是,附加的数据可能应该是一次性密码,否则只要用户当前的会话存在就一直存在。 –

+1

随时编辑我的答案:)这就是所有关于。 –

3

你试过看IP地址吗?

该服务可能从相同的IP地址(或地址范围)访问站点。如果是这样的话,那么你所要做的就是检查请求的远程IP地址,我相信这是PHP的$_SERVER['REMOTE_ADDR']

我还应该提到IP地址ACLs并不完美,因为IP地址可能是spoofed。除非绝对控制(或保证安全)离开和进入网络的数据包,否则他们可能不应过分依赖安全性。也就是说,它们很可能足以满足您的“简单”安全要求。

HTTP referer几乎是trivial to circumvent。因此,它对于安全来说不够可靠,应该以一粒盐来进行。

0

我不会去任何上述建议。基本上他们都会降低你的安全措施。

我会使用一个API,如PDFmyURL的API,它允许您通过一系列标准方式直接登录。这确保您不必构建任何新东西。

直接链接到段上的访问安全区:PDFmyURL API documentation

披露:我为Kaiomi,该公司拥有这项服务工作。