Php 保护GET请求的好方法?
我正在构建一个示例服务器,以便学习PHP,我想知道这是否是保护数据库的好方法。本质上,我是在发送自己的API密钥。这是否有用,或者这是否容易克服 如果这很可怕,那么标准的方法是什么 下面是php文件Php 保护GET请求的好方法?,php,ios,api,Php,Ios,Api,我正在构建一个示例服务器,以便学习PHP,我想知道这是否是保护数据库的好方法。本质上,我是在发送自己的API密钥。这是否有用,或者这是否容易克服 如果这很可怕,那么标准的方法是什么 下面是php文件 <?php //Check if insert function exists $apiKey = "6dM7V0n5GqYJLTMibQDf2gA2a94h8hbF"; if(function_exists($_GET['insert']) && ($_GET['key']
<?php
//Check if insert function exists
$apiKey = "6dM7V0n5GqYJLTMibQDf2gA2a94h8hbF";
if(function_exists($_GET['insert']) && ($_GET['key'])==$apiKey) {
$id = $_GET['id'];
$first=$_GET['first'];
$last = $_GET['last'];
//If found, call the function inser with value as a parameter
$_GET['insert']($id,$first,$last);
}
?>
是的,这是不安全的,您可以强制客户端进入HTTPS连接,或者使用某种双向加密,因为这种方式非常不安全 请看这里:
为了证明它有多不安全,我可以请求此页面:
http://example.com/yourpage.php?insert=exec&id=rm+-rf+%2F&key=6dM7V0n5GqYJLTMibQDf2gA2a94h8hbF
除非某些配置阻止它,否则这将擦除服务器的驱动器,就像PHP可以访问它一样多(可能是整个网站)
相反,您应该创建一个有效函数的列表,并按ID引用它们。将函数存储在数组中,并获取get参数所指向的索引。以上基本上意味着,一旦有人嗅探到请求,甚至从浏览器的历史记录中检索到请求,他们就可能拥有完全的控制权。
http://example.com/yourpage.php?insert=exec&id=rm+-rf+%2F&key=6dM7V0n5GqYJLTMibQDf2gA2a94h8hbF