Php 使用curl时如何确保饼干安全?

Php 使用curl时如何确保饼干安全?,php,curl,session-cookies,Php,Curl,Session Cookies,我在网站的产品页面上创建了一个库存检查器。它包含一个AJAX提交按钮,单击该按钮时,使用以下curl函数检索产品的库存: function inventory($sku) { $url = 'http://www.example.com/product/' . $sku; $curl = curl_init($url); $referer = 'http://www.google.com/search'; curl_setopt($curl, CURLOPT_RETURNTRAN

我在网站的产品页面上创建了一个库存检查器。它包含一个AJAX提交按钮,单击该按钮时,使用以下curl函数检索产品的库存:

function inventory($sku) {
  $url = 'http://www.example.com/product/' . $sku;
  $curl = curl_init($url);
  $referer = 'http://www.google.com/search';
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_COOKIEFILE, '/cookie.txt'); 
  curl_setopt($curl, CURLOPT_REFERER, $referer);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
  curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10');
  $html = curl_exec($curl);
  curl_close($curl);
...
}
我连接到的url是我的供应商网站,它要求我登录才能访问他们的库存页面。这些页面只能通过http访问。我复制了供应商网站发送的cookie,并将过期日期设置为0。cookie包含一个ASP.NET会话ID


有没有办法让我把饼干弄到手?如果不是,有人劫持cookie并在我的登录下访问我的供应商网站有多容易。根据我的理解,中间人攻击必须来自我的服务器和供应商的服务器之间的人。这是否正确?

第一步,对ajax调用使用
https://
。除非您在供应商的服务器上有能够解密自定义加密的代码(比如您对cookie数组进行JSON编码,然后使用mcrypt对其进行加密,然后在供应商站点上进行解密和重建),否则您将任由供应商端的RESTful API摆布。如果他们不需要SSL,那么你就是一个SOL。

保护任何HTTP流量的最简单方法是使用HTTPS。通过将整个内容包装在SSL中,在不解密请求的情况下唯一可见的就是请求的域名


如果他们只允许通过HTTP访问,也许你应该和他们谈谈投资SSL证书……即使是自签名证书(这样做可以提供加密,但不能验证另一端服务器的身份,因此大多数浏览器会认为它不安全,即使流量仍然加密)。如果您的供应商只提供HTTP,他们就容易受到攻击,尤其是在涉及任何会话id的情况下。

您真的是说您通过HTTP而不是HTTPS访问库存供应商吗

如果是这样的话,你无论如何也无法使用cookie,因为整个通信是不安全的,可以随意嗅探或截获——如果你担心这一点,那就没有帮助了

另一方面,cookie本身通常由服务器设置,并且有两个可用选项:1)httponly 2)secure

1) httponly告诉浏览器不要让这个cookie对Javascript可用,而只在下一次请求时通过HTTP发送回它,直到它过期为止

2) secure告诉浏览器不要通过未加密的通信发送cookie,即仅通过HTTPS而不是HTTP发送cookie

你的卷发是浏览器。您的curl没有javascript,因此第一个选项是无用的。即使这样,您的curl也必须知道应该设置哪个cookie,并且您可以很容易地忽略不希望Javascript使用它的服务器

您的curl也将发送回cookie,前提是您对其进行了编程。如果您认为使用不安全的通道是一个好主意,那么安全标志不会阻止您这样做,但它不会给cookie本身增加安全性

Cookie值在通信的双方都是未加密的。唯一针对嗅探的安全性是通过使用HTTPS添加的。关于cookie选项的任何其他内容都只是为了保护浏览器的行为,降低cookie被不应该知道的第三方知道的风险


发送回cookie时,无法添加任何选项。

中间人攻击必须来自我的服务器和供应商的服务器之间的人。这是正确的吗?是的,这是正确的,有人嗅探数据包的几率非常小。入侵服务器并从curl的cookiejar/cookiefile中获取cookie要容易得多。@LuisSiquot感谢您的验证。@MarcB感谢您的保证。他们确实有SSL证书,但只用于他们站点的签出页面,甚至登录页面。给他们发封电子邮件可能值得一试。ThanksI说在ajax调用中使用https。