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