我正在使用名为 I'm PDF 的简单服务在在线发票上创建PDF版本。现在,客户端必须登录才能看到在线版本,但结果是api服务也无法访问它。如何检测pdf服务是否正在访问该站点并在没有密码的情况下相应地允许它?
我以为$ _Server ['http_referrer']会这样做,但我没有运气。我甚至不确定变量是什么,所以每当访问页面时,我都会通过电子邮件发送给我的var_dump($ _ Server)。当我去页面时,它发送得非常漂亮,但是当生成pdf时,没有运气。
有什么想法吗?
感谢您的帮助!
答案 0 :(得分:4)
您需要识别用户。使用此服务的唯一方法似乎是将某些内容附加到pdf URL(GET参数)。
因此,在服务器端创建一些秘密,用它签署用户ID,将其附加到impdf URL并根据请求解析它的秘密。您将获得可用于授权的用户ID。
答案 1 :(得分:3)
您是否尝试过查看IP地址?
该服务可能从相同的IP地址(或地址范围)访问该站点。如果是这种情况,那么您所要做的就是检查请求的远程IP地址,我认为该地址位于PHP的$_SERVER['REMOTE_ADDR']
。
我还应该提到IP地址ACLs并不完美,因为IP地址可以是spoofed。除非绝对控制(或保证安全)数据包离开和进入网络,否则它们可能不应过分依赖安全性。也就是说,它们很可能足以满足您的“简单”安全要求。
HTTP referer非常trivial to circumvent。因此,它对于安全性来说不够可靠,应该用一粒盐。
答案 2 :(得分:0)
我不会去寻求上述任何建议。基本上他们都会降低你的安全措施。
我使用的是诸如PDFmyURL的API之类的API,它允许您通过一系列标准方式直接登录。这可以确保您不必构建任何新内容。
指向访问安全区域的部分的直接链接:PDFmyURL API documentation
披露:我为拥有此项服务的Kaiomi工作。