如果这听起来有点荒谬,请多多包涵,但我只是在过去一两周内才学会了 PHP 和 jQuery 的基础知识。这对于任何有一点经验的人来说都是显而易见的,所以我很感激你能分享的任何信息。
我正在更新我的网站以包含一个自定义搜索功能,该功能通过 cURL 调用查询 SQL 数据库。简而言之:
我从 HTML 表单(包括文本框)获取用户输入,然后将值发布到我域下服务器上的 php 文件(searchfunction.php)。
searchfunction.php 然后处理表单数据,将其添加到包含私有 API 密钥(格式为 http://apidomain/[api key]/request.php?querystring)的 URL 查询字符串中,并将其发送到通过 curl_init 的第 3 方服务器。
然后,第 3 方服务器根据 URL 的查询字符串返回一个序列化的 php 数组。然后,php 文件处理数组并回显与原始用户表单出现在同一页面上的一些 HTML(通过一些我几乎不理解的 jQuery 魔术)。
以下是我的问题:
Q1) 因为我将 cURL 字符串发送到 API,然后处理所有 SQL 内容,我是否有 SQL 注入的风险?如果是这样,消除这种风险的理论是什么?
Q2) 如何隐藏私有 API 密钥?浏览器的 URL 栏永远不会包含它,但是有没有一种简单的方法(可能是通过 .htaccess 文件)来防止窥探处理表单数据并返回 HTML 的 php 文件的内容?
Q3) 是否还有其他我应该注意的明显安全漏洞?有一些方法可以通过 API 写入数据库(尽管不是没有 API 密钥和适当的查询字符串语法),那么如何防止恶意用户操纵 cURL 调用呢?
提前感谢您的帮助。现在我已经进入了让我的网站与其他服务器通信的令人眼花缭乱的世界,我发现自己完全不知所措,尤其是在安全方面。