php - 如何保护 php 中的数据库配置

标签 php mysql

我有一个 php api 端点,如下所示。

我需要进行如下更改:

  1. 需要在单独的文件中包含所有配置

  2. 使用服务器 token 验证 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 点)我已将所有配置放在一个单独的文件中,例如:

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

需要澄清将此配置文件包含在我的主文件中的更好方法。

由于我将 API 端点共享给客户端,因此主文件应该能够读取我的数据库配置文件。

所以建议使用:

require ("configuration.php");

或者

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

其他2点需要建议

最佳答案

以下是另外两点的建议:

  1. 使用服务器 token 验证 API 请求以确保仅接受 真实的请求

为此,您可以使用 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);

    希望这是您所需要的!!

    关于php - 如何保护 php 中的数据库配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43862819/

    相关文章:

    javascript - 在 wordpress 中使用 jquery 日期选择器

    php - utf8_decode 未解码 ×(黑色菱形 �)

    sql - MySQL:我的 SELECT FROM IN 语法有问题

    php - WordPress 在 wp_nav_menu_container_allowedtags 中添加更多标签

    php - 日期未使用 laravel 保存到 mySQL 数据库

    javascript - 根据选择元素的 onchange 事件添加新的 moodle UI 元素

    MySQL - 如何将数据库组织到文件夹中

    mysql - Teamsite错误: Couldn't rollback jdbc connection.连接关闭后不允许进行任何操作

    php - laravel 数据库连接返回未定义索引错误

    php - 我可以检查 PHP 是否启用了 Java