javascript - 如何在我的 javascript 文件和 php 文件之间创建桥接代码以保护 MySQL 信息?

标签 javascript php apache

我有四个文件。

  1. index.php “主页面”,带有使用MySQL 数据库的搜索功能。我调用数据库 抛出 javascript,客户端。
  2. fetch.php "包含 MySQL 连接信息。
  3. bridge.php 来覆盖 fetch 文件,我正在使用 php 代码来制作 连接。
  4. .htaccess 文件以阻止对 fetch.php 文件的任何直接访问。

index.php<--->bridge.php<--->fetch.php<--->Mysql

我的 index.php 文件包含以下代码,因为我使用的是 JavaScript! .htaccess 文件阻止了 index.php 文件访问我的 fetch.php 文件,javascript 是“客户端”

<script>
$(document).ready(function(){

    function load_data(query)
    {
        $.ajax({
            url:"bridge.php",
            method:"post",
            data:{query:query},
            success:function(data)
            {
                $('#result').html(data);
            }
        });
    }

所以我让我的 javascript 代码调用 bridge.php 文件,bridge.php 文件调用 fetch.php 文件抛出 PHP 语言,使所有这些工作。

所以我的 bridge.php 文件代码:

<?php
include 'fetch.php';
?>

现在没有人可以直接访问fetch.php .htaccess 文件阻止任何直接连接抛出浏览器,但如果我调用文件 bridge.php 抛出浏览器,它将打开数据库!那不能解决任何问题!我做错了什么?

这是我的 .htaccess 文件的代码:

<Files ~ "fetch.php">
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Files>

这就是我的获取文件调用 MySQL 的方式:

$connect = mysqli_connect("localhost", "example.com", "passowrd", "databasename");
$output = '';
if(isset($_POST["query"]))
{
    $search = mysqli_real_escape_string($connect, $_POST["query"]);
    $query = "
    SELECT * FROM tbl_customer 
    WHERE CustomerName LIKE '%".$search."%'
    OR Address LIKE '%".$search."%' 
    OR City LIKE '%".$search."%' 

最佳答案

我认为您使问题过于复杂,或者您已经编写了 fetch.php以一种无济于事的方式。

我猜你的 fetch.php其中包含 MySQL 函数或类代码,然后您可以访问和使用它们。像这样的东西:

<?php

define('MYSQL_SERVER','localhost');
define('MYSQL_LOGIN','mylogin');
... and more ...

class DB {
   ... methods ...
}
?>

fetch.php的关键部分应该是开场<?php和结束?> .

如果您(或其他任何人)直接请求 fetch.php ,您的代码应该以一种结果是完全空白的页面的方式编写。

Web 服务器上唯一的开销是单个 PHP 传递,然后将空白返回给浏览器。

如果您以另一种方式编写代码,我建议您重新考虑您的方法并质疑为什么您已经完成了您所拥有的。

顺便说一句,将详细信息添加到 .htaccess file 只有在没有其他方法的情况下才应该完成。至于web server preformance, they are not a good idea .

编辑:

如果你真的想确定fetch.php不是直接调用,而是只包含在另一个文件中,您可以在顶部执行类似以下操作:

<?php

if (count(get_included_files()) == 1) {
    // direct request, do nothing
    exit;
    // or even redirect somewhere like
    header("Location: /");
    exit;
}

// has been included, allow rest of script to process
$connect = mysqli_connect("localhost", "example.com", "passowrd", "databasename");
// ... more code below

关于javascript - 如何在我的 javascript 文件和 php 文件之间创建桥接代码以保护 MySQL 信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55755217/

相关文章:

javascript - 将 "Show All' 添加到 Jquery 自定义自动完成列表的底部

javascript - v-on 处理程序中出现错误 : "Error: Reference.set failed: First argument contains undefined"

php - 动态 SQL 插入查询

php - 如何从 Flickr 检索所有公共(public)地理标记照片?

apache - 如何在 Apache 2.4.1 中与 Haproxy 一起使用 mod_deflate?

javascript - 如何使用 Underscore.js 转换/混淆对象中的每个值

javascript - 我如何解决这个 "Cannot read property ' appendChild' of null"错误?

php - 如何让 Xdebug 在 Heroku 上运行?

apache - 如何在我的 ec2 ami apache 服务器上启用 https

apache - htaccess : Redirect to https not working with out www