2015-07-02 106 views
0

我是否必須擔心MySQL連接存在安全問題。在我的項目中,我有一個PHP文件,其中包含我需要運行的各種函數的所有連接信息和語句,這些函數使用require once或ajax語句從中獲取數據。帶數據庫的PHP安全性

像與

<?php 
    require_once '../includes/game_query.php'; 
    game_page_query(1); 
?> 

其中要求到該文件運行查詢和回聲一些HTML生成到頁面上。

有沒有辦法可以利用/攻擊,因爲select的連接信息在PHP文件中是可見的?

+3

請勿將敏感文件放入您的文檔根目錄中,那麼......如果php在您的服務器上被禁用/中斷,那麼這些文件可能會以純文本形式提供,並且您將暴露所有的php代碼世界。如果該文件不在文檔根目錄中,最終用戶根本無法訪問該文件。 –

+0

@MarcB那麼那麼我對這個特定安全問題的解決方案就是將我的文檔與服務器上的htdocs文件夾之外的SQL信息一起移動? – gcalex5

+1

這取決於你。 PHP通常不會在乎文件的位置。它在文件系統級別工作,幾乎完全不受apache自己的安全系統的限制。 –

回答

0

首先,請確保您使用的是prepared SQL statements或者至少是轉義數據庫參數。

如果您擔心PHP的細節被泄露,比如說您的PHP解釋器關閉,並且所有的東西都可以通過網絡服務器看到(正如您在問題的評論中提到的那樣);你有兩個選擇。第一個是將包含敏感信息的文件移動到包含Web服務器文件的目錄之上的一個級別,然後將額外的../添加到您的要求中。另一種選擇是通過.htaccess直接限制對文件的訪問。

如果你不想讓你的PHP的執行文件直接而且如果你想不用做什麼,我在上一段你可以做什麼描述是:

首先把這個上面你需要在PHP腳本,您包含文件:

define('includeAllow', true); 

然後將其添加到文件本身開幕PHP標籤如下:

if (!defined('includeAllow')) { 
    die('Access denied.'); 
} 

注意如果在服務器上禁用了PHP,則連接信息仍可能被服務器公開。

我應該澄清一下,在開啓PHP解釋器的情況下,除非他們有權訪問服務器上的文件(即通過SSH/FTP),否則有人無法查看PHP文件的來源,以我從未見過的經驗PHP解釋器意外關閉或PHP意外從服務器上卸載。

XSSCSRF攻擊比這種類型的攻擊更頻繁。這些是您需要保護自己的漏洞類型。