国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

PHP安全-源碼暴露(二)

黃舟
發(fā)布: 2017-02-20 09:40:27
原創(chuàng)
1908人瀏覽過


?源碼暴露

? 你的WEB服務(wù)器必須要能夠讀取你的源確并執(zhí)行它,這就意味著任意人所寫的代碼被服務(wù)器運(yùn)行時(shí),它同樣可以讀取你的源碼。在一個(gè)共享主機(jī)上,最大的風(fēng)險(xiǎn)是由于WEB服務(wù)器是共享的,因此其它開發(fā)者所寫的PHP代碼可以讀取任意文件。

?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

 <?php
 
  header('Content-Type: text/plain');
  readfile($_GET['file']);
 
  ?>
登錄后復(fù)制


?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

? 通過在你的源碼所在的主機(jī)上運(yùn)行上面腳本,攻擊者可以通過把file的值指定為完整的路徑和文件名來使WEB服務(wù)器讀取并顯示任何文件。例如,假定該腳本命名為file.php,位于主機(jī)example.org上,只要通過訪問下面鏈接即可使文件/path/to/source.php的內(nèi)容暴露:

http://www.miracleart.cn/

?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

? 當(dāng)然,要使這段簡單的代碼起作用,攻擊者必須確切地知道你的源碼的位置,但是攻擊者可以寫出更復(fù)雜的腳本,通過它可以方便在瀏覽整個(gè)文件系統(tǒng)。關(guān)于此類腳本,請(qǐng)看本章后面部分的示例。

? 對(duì)該問題沒有完美的解決方案。正如第五章所述,你必須考慮所有你的源碼都是公開的,甚至是保存在WEB主目錄之外的代碼也是如此。

? 最好的辦法是把所有敏感數(shù)據(jù)保存在數(shù)據(jù)庫中。雖然這使一些代碼的編寫多了一層復(fù)雜性,但這是防止你的敏感數(shù)據(jù)暴露的最好方法。很不幸的是,還有一個(gè)問題。如何保存你的數(shù)據(jù)庫訪問密碼?

? 請(qǐng)看保存在網(wǎng)站主目錄之外一個(gè)名為db.inc的文件:

 <?php
 
  $db_user = 'myuser';
  $db_pass = 'mypass';
  $db_host = 'localhost';
 
  $db = mysql_connect($db_host, $db_user,
$db_pass);
 
  ?>
登錄后復(fù)制


?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

? 如果該文件的路徑是已知的(或被猜中),就存在著你的服務(wù)器上的另外一個(gè)用戶訪問該文件的可能,就會(huì)獲取數(shù)據(jù)庫訪問權(quán)限,這樣你保存在數(shù)據(jù)庫中的所有數(shù)據(jù)就會(huì)暴露。

? 解決該問題的最好方案是把你的數(shù)據(jù)庫訪問權(quán)限以下面的格式保存在一個(gè)只有系統(tǒng)管理員權(quán)限才能讀取的文件中:

?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

 SetEnv DB_USER "myuser"
  SetEnv DB_PASS "mypass"
登錄后復(fù)制


?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

? SetEnv是一個(gè)Apache的指令,上面文件的意思是建立兩個(gè)分別代表你的數(shù)據(jù)庫用戶名及密碼的Apache環(huán)境變量。當(dāng)然,該技巧的關(guān)鍵是只有系統(tǒng)管理員才能讀取該文件。如果你無法登錄成為系統(tǒng)管理員,你就可以限制該文件只能由你自已進(jìn)行讀取,這樣的保護(hù)方式與上面的方式類似。

?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

 $ chmod 600 db.conf
  $ ls db.conf
  -rw-------  1 chris chris 48 May 21 12:34
db.conf
登錄后復(fù)制


?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

? 這就有效地防止了惡意腳本訪問你的數(shù)據(jù)中權(quán)限,因此對(duì)于數(shù)據(jù)庫中保存的敏感數(shù)據(jù)來說,不會(huì)有危及安全的重大風(fēng)險(xiǎn)。

? 為使該文件生效,你就需要能夠通過PHP訪問其中的數(shù)據(jù)。要達(dá)到這個(gè)目的,需要在httpd.conf中寫上如下的包含句:

?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

  Include "/path/to/db.conf"
登錄后復(fù)制


?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

? 需要注意該語句需要插入在VirtualHost區(qū)域內(nèi),否則其它用戶就能取得相應(yīng)的內(nèi)容。

? 由于Apache的父進(jìn)程以系統(tǒng)管理員身份運(yùn)行(需要綁定在80端口),它能夠讀取該配置文件,但處理服務(wù)器請(qǐng)求的子進(jìn)程(運(yùn)行PHP腳本)不能讀取該文件。

? 你可以通過$_SERVER超級(jí)全局?jǐn)?shù)組去訪問這兩個(gè)變量,這樣在db.inc中,只要通過引用$_SERVER變量即可,而不是在其中寫明數(shù)據(jù)庫的權(quán)限:

<?php
 
  $db_user = $_SERVER['DB_USER'];
  $db_pass = $_SERVER['DB_PASS'];
  $db_host = 'localhost';
 
  $db = mysql_connect($db_host, $db_user,
$db_pass);
 
  ?>
登錄后復(fù)制


?

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

? 如果該文件被暴露,數(shù)據(jù)庫訪問權(quán)也不會(huì)泄露。這對(duì)于共享主機(jī)是一大安全性改進(jìn),同時(shí)對(duì)于獨(dú)立主機(jī)也是一種深度防范手段。

? 注意在使用上述技巧時(shí),數(shù)據(jù)庫訪問權(quán)限就位于$_SERVER超級(jí)公用數(shù)組中。這就需要同時(shí)限制普通訪問者運(yùn)行phpinfo()察看或其它任何導(dǎo)致$_SERVER內(nèi)容暴露的原因。

? 當(dāng)然,你可以使用本技巧保護(hù)任何信息(不只是數(shù)據(jù)庫訪問權(quán)限),但我發(fā)現(xiàn)把大多數(shù)數(shù)據(jù)保存在數(shù)據(jù)庫更為方便,特別是由于該技巧需要得到你的主機(jī)提供商的協(xié)助。

?以上就是PHP安全-源碼暴露(二)的內(nèi)容,更多相關(guān)內(nèi)容請(qǐng)關(guān)注PHP中文網(wǎng)(www.miracleart.cn)!


PHP速學(xué)教程(入門到精通)
PHP速學(xué)教程(入門到精通)

PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問題
開源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)