我正在创建一个应用程序来将我的本地 mysql 数据库同步到远程 mysql 数据库,因此我正在生成一个转储文件,通过 sFTP 发送它,然后在服务器上执行它。
但是,我知道还有其他可用的方法,例如 cURL。我喜欢将数据发送到远程服务器并在接受(TRUE)时在服务器上执行它,但我对这方面与使用 cURL 相关的安全问题知之甚少。任何人都可以就 cURL 解决方案提出建议,或者建议任何替代方法吗?
最佳答案
首先,您应该使用 file_get_contents()
、fread()
等从文件中读取数据,而不是生成转储文件。
将此结果存储在一个变量中,然后通过管道发送该原始数据(如果您愿意,可以通过 cURL),并让服务器端的代码生成转储文件。
使用 cURL,您可以指定用于身份验证的私有(private)证书文件 - 因此其安全性与通过 ssh 使用证书相同 - 这不是您需要担心的事情。
您可以使用以下 cURL 选项示例设置 pem 文件:
curl_setopt($ch, CURLOPT_SSLCERT, $pemfile);
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');
curl_setopt($ch, CURLOPT_SSLKEY, $keyfile);
Internet 上有上述内容的教程。使用私钥身份验证,您的安全问题得到解决。只要确保您没有将 CURLOPT_SSL_VERIFYPEER
设置为 false
(您现在不希望任何 MiTM(中间人)攻击,是吗)。
关于php - ssh 或 cURL 将数据发送到远程服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19358211/