PHP - 检查请求的 SSL 证书

标签 php ajax ssl

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

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

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

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

可能吗?

最佳答案

I'm trying to ensure that the calls to my getinfo.php originate from my website and not from someone trying to steal my (very expensive) data by just hitting the URL.

您是说您要确保getinfo.php 的调用来自正在访问您网站的客户端?这是一个重要的区别。 “您的网站”不会发出请求,访问该网站的客户才是。客户端在发送请求时是否仍然打开您的网站是无法检测到的,每个请求看起来都和其他请求完全一样。

可以要求客户在请求中发送一个 token ,他在打开您的网站时一定已经获得了该 token 。通常是 cookie 和/或 session ID。没有有效的 cookie/session,您将无法回答客户。

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

就所有意图和目的而言,如果 API/站点是公开的,那么数据也是公开的。如果您真的想保护它,则必须要求用户身份验证,并小心将这些帐户提供给谁。这还可以对似乎在抓取您的数据的用户进行审核和可能的禁止。

关于PHP - 检查请求的 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541952/

相关文章:

email - 无法使用 Delphi 从 Gmail 帐户下载/检索电子邮件(SSL3_GET_RECORD :wrong version number)

ssl - 如何以编程方式将证书添加到 Firefox 版本 59,在 firefox 文件夹中找不到 cert9.db

php - 使用 MySQL 选择查询时出现问题

PHP 和 VB.net - 相同的数据库

php - HTML 表单 PHP 发布到自己以验证或提交到新页面

javascript - 如何在网页加载之前制作预加载器?

http - 开类 : getting rid of HTTP"S"for good

php - MYSQL多词搜索结果

javascript - 当两个单独的 Ajax 调用完成时,调用函数的好方法是什么?

javascript - 在 Ajax 调用后将值设置为 parent 的 parent 的 child 的 sibling