2010-11-08 58 views
0

我使用cURL远程登录网站,并且一切正常。我发布登录信息,检索cookie并被远程站点重定向。我有几个关于cookie如何实际运行的问题。使用带曲线的饼干

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, 'https://website'); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
    curl_setopt($ch, CURLOPT_POST, TRUE); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, '/php/cookies.txt'); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, '/php/cookies.txt'); 
    $result = curl_exec($ch); 
    $x = curl_getinfo($ch); 
    print_r($x); 

1.)是否有一些安全问题需要通过POST发送登录信息来关注?

2.)当我将curlopt_cookiejar设置为/php/cookies.txt时,实际上我没有看到该文件保存在任何地方。这可能是由于权限,但登录正在工作。为什么会是这种情况?什么是正确的权限,允许这个文件被写入并保存?

3.)将cookiejar文件存储为明文安全吗?什么是保存此文件的最佳位置? 4.如果这个脚本被多个用户定期使用,什么会阻止cookie.txt中正确的cookie信息被发回到服务器,使用curlopt_cookiefile被其他写入的cookie混淆这个文件?处理过期cookie的最佳方法是什么,并从该文件中删除旧的cookie?

这显然是cURL的一个非常重要的功能,但我似乎无法在任何地方找到这些答案。我希望一位cURL大师能够一劳永逸地设置这些问题。

回答

1

1)否

2)
    2.0)它写入/ PHP的 - 也就是,关根文件系统,在文件夹的php。你在那里检查?
    2.1)cookiejar只会用于后续不发送登录信息的请求。在这一点上,我想知道你在使用cookiejar是什么...你确定你甚至需要这些cookie吗?他们(不应该)被发送到您重定向到的第三方网站,那么他们在做什么?
    2.2)运行PHP的用户(通常是web服务器)将需要写入该文件的权限。 3)只要你把cookiejar放在你的文件系统的某个地方,而其他人不能被任意访问,你应该没问题 - 例如,你可能想把它放在webroot之外的某个地方。 4)如果这个脚本经常被多个用户使用,你几乎可以肯定地得到该文件中所有不同类型数据的组合 - 这表明你应该给每个用户自己的cookiejar文件,或者有些东西......因为这个位置是通过PHP字符串设置的,所以你不应该有太多的麻烦来弄清楚如何使它变成动态的。 CURL将负责在随后的请求和响应期间不将过期的cookies写入jar。

+0

2.0 - 我在那里检查,但没有文件被写入。我认为这是由于该文件夹没有完整的写入权限。什么是允许写作的最安全的方式?我读了很多关于CHMOD 777如何不是一个好主意的信息。 – 2010-11-10 15:36:11

+0

2.1 - 如果远程站点的Cookie位于标题中,登录将只重定向到正确的页面,否则它会将我注销。 2.2 - 你能告诉我如何在不授予文件夹777权限的情况下向服务器写入权限吗?这是我需要通过root访问吗? 3 - 我可以使用这样的路径吗? /../folder_out_of_webroot/ 4 - 这是否说cookies.txt文件会在cookies过期时自动删除? – 2010-11-10 15:39:57

+0

向curl进程授予写入权限的最不宽松的方式是按照原样从PHP(通过phpinfo())获取uid/gid,将cookiejar分配给该用户,然后使其成为0700(即“所有权的所有者,没有任何人有任何权利“)。 – TML 2010-11-10 19:19:06