簡體   English   中英

mysql / php是連接到mysql DB的安全方法嗎?

[英]mysql/php is this a secure way to connect to mysql DB?

好的,有很多人問這個問題,並且有很多方法可以確保與數據庫的連接安全,

現在,我做了一些谷歌搜索,很多人建議,將與數據庫代碼的連接放在html_public之外的文件中,並在需要建立連接時從那里調用它。

老實說,我對自己的財產感到滿意,盡管我不確定它的安全性,

這是我連接到數據庫的方式:

首先,我確保所有輸入均已完全轉義並經過驗證...

之后,在同一頁面中,我進行連接,例如:

mysql_connect("localhost","Admin","Password") or 
die ("DB Connection Error");
mysql_select_db("Users") or die ("DB Error");

和其余的代碼之后,我關閉了mysql連接。

現在,只是不覺得數據庫用戶信息寫在頁面中,但是某人(“黑客”)如何獲得此信息呢?

我的意思是,所有輸入都被完全轉義和驗證,我使用的用戶只有非常有限的特權,例如select和update...。

這樣安全嗎? 如果不是,請問您可以提出一種更安全的方法嗎?

非常感謝您對我們的幫助:)

陰涼

您應該考慮將此文件放置在Web根目錄之外的原因是,某些托管服務提供商已臨時停止不時解釋PHP(由於配置錯誤,通常是在更新之后)。 然后,將以明文形式發送該代碼,並且密碼將被大量使用。

考慮以下目錄結構,其中public_html是網絡根目錄:

/include1.php
/public_html/index.php
/public_html/includes/include0.php

現在考慮這個index.php

<?php
include('includes/include0.php');
do_db_work_and_serve_page_to_visitor();
?>

如果網絡服務器開始公開提供此文件,則不久之后就會有人嘗試下載include0.php 但是,沒有人可以下載include1.php ,因為它在Web根目錄之外,因此從未由Web服務器處理。

我個人還沒有聽說過托管服務提供商不解釋PHP,導致您的php源代碼公開。 我只是在未安裝php的基於RHEL5的服務器上對此進行了快速測試,並且在嘗試訪問php文檔時剛回到空白頁面。

mysql_ *函數已被最新版本的php棄用,現在正朝着mysqli邁進,這是一個更有效,更安全的整體解決方案; 我建議看一看; http://php.net/manual/zh/book.mysqli.php-使用普通的mysql_函數,PHP5.4中沒有使用過的錯誤或類似的東西,但是如果您希望掌握最重要的內容,看看mysqli。

老實說,關於上述問題的快速解答,我認為該方法相當安全。 只要確保您已設置轉義字符等,我認為您不會遇到任何問題。

編輯:有人發布說,在極少數情況下,某些提供商可能會以這種方式泄漏您的php源代碼。 如果是這種情況,我的第一個建議是切換提供程序..但是使用include_once從另一個PHP文件/ lib加載數據庫信息將是解決此問題的快速方法。 但是,如果提供商的設置確實允許此類泄漏,那么我會比您更擔心它們的安全性。

您可以讓php從存儲在公共網站空間外部的文本文件中(使用fopen)獲取數據庫密碼,但是我個人沒有這樣做的真正原因。

祝你好運!

  • 歐漢

最好的做法是使用PHP PDO代替舊的mysql API。

看看: http : //php.net/manual/en/ref.pdo-mysql.connection.php

另外,這是一篇有趣的文章: http : //net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM