繁体   English   中英

PHP - 检查请求的SSL证书

[英]PHP - check SSL certificate of the request

PHP是否可以获取请求的证书,特别是证书和CA上的网站名称?

我想检查是否只能通过AJAX调用从我的网站调用我的PHP文件。 像这样:

  1. 用户登录我的网站,然后使用https进行后续交互
  2. 用户加载页面https:// domain/mypage.php
  3. https:// domain/mypage.php有一个AJAX调用https:// domain/getinfo.php

在getinfo.php中我想检查请求的证书详细信息,以确保请求来自我的网站, 即不是直接命中URL,或使用抓取工具。

可能?

我正在努力确保对我的getinfo.php的调用来自我的网站而不是来自试图通过点击URL来窃取我(非常昂贵)数据的人。

你的意思是你想确保对你的getinfo.php调用来自访问你网站的客户 这是一个重要的区别。 “您的网站”不会发出请求, 访问该网站的客户端是。 无论客户端在发送请求时是否仍然打开您的站点都无法检测到,每个请求看起来都与其他任何请求完全一样。

可以要求客户端在请求中发送令牌,而该令牌在打开您的站点时必须获得。 通常,这是一个cookie和/或会话ID。 没有有效的cookie /会话,您将无法回答客户端。

这仍然可以在不实际打开页面的情况下完全抓取数据,只需要一个请求获取cookie,另一个请求获取数据。

出于所有意图和目的,如果API /站点是公共的,那么数据也是公共的。 如果您真的想要保护它,您将不得不要求用户身份验证,并且要小心您将这些帐户提供给谁。 这也使得审计和可能禁止用户看起来会刮掉您的数据。

另一种方式是一次性GET / POST令牌,比如你保存你的令牌以及有效期,然后你给脚本提供令牌,脚本使用https://example.com/getinfo.php?t调用网站=令牌 ,例如,您向客户端提供您的数据并删除令牌,以便任何人都无法使用已使用的令牌。

在任何情况下你似乎都是通过SSL调用,这是好的并且更好地保留它,因为通过HTTP,令牌无论是获取还是发布是完全可见的,所以如果攻击者关闭连接然后尝试获取URL它是坏。

任何类型的恶意软件也可以这样做,因为在传输数据(令牌甚至你的“信息”)很可能是在RAM中未加密的,所以它可以在没有人注意的情况下被拾取。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM