2017-05-09 92 views
0

我有一个php api终端如下。如何在php中保护数据库配置

我需要改变这样的:

  1. 需要包括所有在单独的文件中使用服务器令牌

  2. 验证API请求,以确保只接受真正的请求的配置

  3. 捕获单独文件中的所有错误日志,而不是在浏览器中显示

这是我的代码:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
$data = json_decode(file_get_contents('php://input'), true); 

if(!empty($data)): 
header('Content-Type:text/plain'); 


/*MYSQL CREDENTIALS*/ 
$hostname = 'localhost';     
$username = 'root'; 
$password = ''; 
$dbname = 'mydb'; 
$dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); 

$arraykey=array_keys($data); 
$array=$data[$arraykey[0]]; 

try 
{ 

    foreach($data as $array) 
    { 

    //MYSQL execute 
    $count = $dbh->exec("INSERT INTO gmr(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime) VALUES ('" . implode("', '", $array) . "')") or die(print_r($dbh->errorInfo(), true)); 

    echo count($data); 
    echo 'Data Successfully inserted!!<br />'; 
} 
//echo $data; 
} 
catch(PDOException $e) 
{ 
    echo $e->getMessage(); 
} 

endif; 
?> 

对于点1)我已经把所有的configs在一个单独的文件,如:

<?php 
define (DB_USER, "root"); 
define (DB_PASSWORD, ""); 
define (DB_DATABASE, "mydb"); 
define (DB_HOST, "localhost"); 
?> 

需要的更好的方式清晰,以便在此配置文件我的主文件。

由于im将API端点共享给客户端,主文件应该能够读取我的db配置文件。

因此,这是建议使用:对于其他2分

+0

3)您可以使用PHP [set_error_handler](http://php.net/manual/en/function.set-error-handler.php)。 –

回答

0

这里需要

require ("configuration.php"); 

OR

$config = parse_ini_file('../config.ini'); 

建议是另一个两点建议:

  1. 验证API请求usi纳克一个服务器令牌来确保只接受 正版请求

为此,您可以使用CSRF Token检查有效的请求。你可以找到here这个重要的用法。

  • 列表项捕获所有的错误日志在一个单独的文件,而不是在浏览器
  • 默认PHP登录服务器侧一切表示。在Ubuntu,你可以找到/var/log/apache/error.log

    只要你需要检查你的Apache配置正确的错误日志设置

    这里阅读更多信息:Where does PHP store the error log? (php5, apache, fastcgi, cpanel)

    ,如果你不想显示您的错误浏览器,然后你可以设置error_reporting(0);

    希望这是你需要的!