Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-检查请求的SSL证书_Php_Ajax_Ssl - Fatal编程技术网

PHP-检查请求的SSL证书

PHP-检查请求的SSL证书,php,ajax,ssl,Php,Ajax,Ssl,PHP是否可以获得请求的证书,特别是证书和CA上的网站名称 我想检查对我的PHP文件的调用是否只能通过AJAX调用从我的网站进行。像这样: 用户登录到我的网站,然后使用https进行后续交互 用户加载一个页面https://domain/mypage.php https://domain/mypage.php对https://domain/getinfo.php 在getinfo.php中,我想检查请求的证书详细信息,以确保请求是从我的网站发出的,即不是直接点击URL或使用刮削工具发出的 可能吗

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

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

  • 用户登录到我的网站,然后使用https进行后续交互
  • 用户加载一个页面
    https://domain/mypage.php
  • https://domain/mypage.php
    https://domain/getinfo.php
  • 在getinfo.php中,我想检查请求的证书详细信息,以确保请求是从我的网站发出的,即不是直接点击URL或使用刮削工具发出的

    可能吗


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

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

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

    这仍然使得在不打开页面的情况下刮取数据成为可能,只需发出一个请求获取cookie,另一个请求获取数据


    出于所有目的,如果API/站点是公共的,那么数据也是公共的。如果你真的想保护它,你必须要求用户身份验证,并小心你给谁这些帐户。这还允许审核和可能禁止用户刮取您的数据。

    另一种方法是一次性获取/发布令牌,比如您将令牌与有效期一起保存,然后将令牌交给脚本,脚本使用例如 您向客户端提供数据并删除令牌,这样就没有人可以使用已经使用的令牌

    另外,在任何情况下,您似乎都是通过SSL调用的,这很好,最好保留它,因为通过HTTP,令牌无论是get还是post都是完全可见的,因此,如果攻击者关闭连接,然后试图获取URL,则是错误的


    此外,任何类型的恶意软件都可以这样做,因为在传输数据(令牌,甚至您的“信息”)后,数据很可能未加密在RAM中,因此可以在没有任何人注意到的情况下提取数据。

    简短回答:不。无论您做什么,都可以欺骗请求,使其看起来像来自Ajax。老实说,我甚至无法具体说明这种证书方法是如何工作的——所有请求都将使用相同的证书,不管是否使用Ajax,除非您需要客户端证书(这对您的用户来说是一个完整的PITA),否则您要查看的证书将始终是服务器端证书,这显然告诉你什么。考虑WebSosits,这将告诉你更多。服务器证书将确保服务器的标识。由于您的服务器已经接收到请求,我很确定您可以确定您的服务器实际上就是它自己。你想在这里保护什么?我想确保对我的getinfo.php的调用来自我的网站,而不是试图通过点击URL窃取我(非常昂贵)数据的人。因此,我不想给人们一个URL,他们可以访问并以JSON格式获取数据,我想让它尽可能困难,至少排除他们从getinfo.php获取数据的可能性