Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 保护GET请求的好方法?_Php_Ios_Api - Fatal编程技术网

Php 保护GET请求的好方法?

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,我想知道这是否是保护数据库的好方法。本质上,我是在发送自己的API密钥。这是否有用,或者这是否容易克服

如果这很可怕,那么标准的方法是什么

下面是php文件

<?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