欧美日韩不卡一区二区三区,www.蜜臀.com,高清国产一区二区三区四区五区,欧美日韩三级视频,欧美性综合,精品国产91久久久久久,99a精品视频在线观看

php語(yǔ)言

淺談PHP 安全性

時(shí)間:2025-04-29 12:21:45 php語(yǔ)言 我要投稿
  • 相關(guān)推薦

淺談PHP 安全性

  本文所討論的安全性環(huán)境是在Linux+Apache+Mysql+PHP。超出此范圍的安全性問題不在本文范疇之內(nèi)。

  一、apache server安全性設(shè)置

  1、以Nobody用戶運(yùn)行

  一般情況下,Apache是由Root 來安裝和運(yùn)行的。如果ApacheServer進(jìn)程具有Root用戶特權(quán),那么它將給系統(tǒng)的安全構(gòu)成很大的威脅,應(yīng)確保Apache Server進(jìn)程以最可能低的權(quán)限用戶來運(yùn)行。通過修改httpd.conf文件中的下列選項(xiàng),以Nobody用戶運(yùn)行Apache 達(dá)到相對(duì)安全的目的。

  User nobody

  Group# -1

  2、ServerRoot目錄的權(quán)限

  為了確保所有的配置是適當(dāng)?shù)暮桶踩,需要?yán)格控制Apache 主目錄的訪問權(quán)限,使非超級(jí)用戶不能修改該目錄中的內(nèi)容。Apache 的主目錄對(duì)應(yīng)于Apache Server配置文件httpd.conf的Server Root控制項(xiàng)中,應(yīng)為:

  Server Root /usr/local/apache

  3、SSI的配置

  在配置文件access.conf 或httpd.conf中的確Options指令處加入Includes NO EXEC選項(xiàng),用以禁用Apache Server 中的執(zhí)行功能。避免用戶直接執(zhí)行Apache 服務(wù)器中的執(zhí)行程序,而造成服務(wù)器系統(tǒng)的公開化。

  Options Includes Noexec

  4、阻止用戶修改系統(tǒng)設(shè)置

  在Apache 服務(wù)器的配置文件中進(jìn)行以下的設(shè)置,阻止用戶建立、修改 .htaccess文件,防止用戶超越能定義的系統(tǒng)安全特性。

  AllowOveride None

  Options None

  Allow from all

  然后再分別對(duì)特定的目錄進(jìn)行適當(dāng)?shù)呐渲谩?/p>

  5、改變Apache 服務(wù)器的缺省訪問特性

  Apache 的默認(rèn)設(shè)置只能保障一定程度的安全,如果服務(wù)器能夠通過正常的映射規(guī)則找到文件,那么客戶端便會(huì)獲取該文件,如http://localhost/~ root/ 將允許用戶訪問整個(gè)文件系統(tǒng)。在服務(wù)器文件中加入如下內(nèi)容:

  order deny,ellow

  Deny from all

  將禁止對(duì)文件系統(tǒng)的缺省訪問。

  6、CGI腳本的安全考慮

  CGI腳本是一系列可以通過Web服務(wù)器來運(yùn)行的程序。為了保證系統(tǒng)的安全性,應(yīng)確保CGI的作者是可信的'。對(duì)CGI而言,最好將其限制在一個(gè)特定的目錄下,如cgi-bin之下,便于管理;另外應(yīng)該保證CGI目錄下的文件是不可寫的,避免一些欺騙性的程序駐留或混跡其中;如果能夠給用戶提供一個(gè)安全性良好的CGI程序的模塊作為參考,也許會(huì)減少許多不必要的麻煩和安全隱患;除去CGI目錄下的所有非業(yè)務(wù)應(yīng)用的腳本,以防異常的信息泄漏。

  7、SSL鏈接加密

  以上這些常用的舉措可以給Apache Server 一個(gè)基本的安全運(yùn)行環(huán)境,顯然在具體實(shí)施上還要做進(jìn)一步的細(xì)化分解,制定出符合實(shí)際應(yīng)用的安全配置方案。

  二、PHP安全性設(shè)置

  服務(wù)器并不能阻止所有的安全問題,例如程序漏洞問題、用戶輸入表單問題、PHP文件權(quán)限問題等。 也可以通過一些手段來迷惑黑客或者別有用心者。

  1、程序代碼漏洞問題

  很多 PHP 程序所存在的重大弱點(diǎn)并不是 PHP 語(yǔ)言本身的問題,而是編程者的安全意識(shí)不高而導(dǎo)致的。因此,必須時(shí)時(shí)注意每一段代碼可能存在的問題,去發(fā)現(xiàn)非正確數(shù)據(jù)提交時(shí)可能造成的影響。

  <?php

  unlink($evil_var);

  fwrite($fp,$evil_var);

  system($evil_var);

  exec($evil_var);

  ?>

  必須時(shí)常留意你的代碼,以確保每一個(gè)從客戶端提交的變量都經(jīng)過適當(dāng)?shù)臋z查,然后問自己以下一些問題:

  此腳本是否只能影響所預(yù)期的文件?

  非正常的數(shù)據(jù)被提交后能否產(chǎn)生作用?

  此腳本能用于計(jì)劃外的用途嗎?

  此腳本能否和其它腳本結(jié)合起來做壞事?

  是否所有的事務(wù)都被充分記錄了?

  在寫代碼的時(shí)候問自己這些問題,否則以后可能要為了增加安全性而重寫代碼了。注意了這些問題的話,也許還不完全能保證系統(tǒng)的安全,但是至少可以提高安全性。

  還可以考慮關(guān)閉 register_globals,magic_quotes 或者其它使編程更方便但會(huì)使某個(gè)變量的合法性,來源和其值被搞亂的設(shè)置。

  2、用戶輸入表單問題

  驗(yàn)證用戶輸入的.任何數(shù)據(jù),保證PHP代碼的安全。

  注意1:JS只是為了提高來訪用戶的體驗(yàn)而產(chǎn)生的,而不是驗(yàn)證的工具。因?yàn)槿魏我粋(gè)來訪的用戶都可能會(huì),也有可能無意間就禁用了客戶端腳本的執(zhí)行,從而跳過這層驗(yàn)證。所以我們必須在PHP的服務(wù)器端程序上檢驗(yàn)這些數(shù)據(jù)。

  注意2:不要使用$_SERVER[‘HTTP_REFERER’]這個(gè)超級(jí)變量來檢查數(shù)據(jù)的來源地址,一個(gè)很小的菜鳥黑客都會(huì)利用工具來偽造這個(gè)變量的數(shù)據(jù),盡可能利用Md5,或者rand等函數(shù)來產(chǎn)生一個(gè)令牌,驗(yàn)證來源的時(shí)候,驗(yàn)證這個(gè)令牌是否匹配。

  3、PHP文件權(quán)限問題

  PHP 被設(shè)計(jì)為以用戶級(jí)別來訪問文件系統(tǒng),所以完全有可能通過編寫一段 PHP 代碼來讀取系統(tǒng)文件如/etc/passwd,更改網(wǎng)絡(luò)連接以及發(fā)送大量打印任務(wù)等等。因此必須確保 PHP 代碼讀取和寫入的是合適的文件。 請(qǐng)看下面的代碼,用戶想要?jiǎng)h除自己主目錄中的一個(gè)文件。假設(shè)此情形是通過 web 界面來管理文件系統(tǒng),因此 Apache 用戶有權(quán)刪除用戶目錄下的文件。

  <?php

  $username=$_POST['user_submitted_name'];

  $homedir="/home/$username";

  $file_to_="$userfile";

  unlink("$homedir/$userfile");

  echo"$file_to_ has been d!";

  ?>

  既然 username 變量可以通過用戶表單來提交,那就可以提交別人的用戶名和文件名,并刪除該文件。這種情況下,就要考慮其它方式的認(rèn)證:

  -只給 PHP 的 web 用戶很有限的權(quán)限。 -檢查所有提交上來的變量。 -以下是更加安全的文件名和變量的驗(yàn)證和檢查:

  <?php

  $username=$_SERVER['REMOTE_USER'];

  $homedir="/home/$username";

  if(!ereg('^[^./][^/]*$',$userfile))

  die('bad filename');

  if(!ereg('^[^./][^/]*$',$username))

  die('bad username');

  ?>

  4、隱藏PHP擴(kuò)展名

  一般而言,通過隱藏的手段提高安全性被認(rèn)為是作用不大的做法。但某些情況下,盡可能的多增加一份安全性都是值得的。

  一些簡(jiǎn)單的方法可以幫助隱藏 PHP,這樣做可以提高攻擊者發(fā)現(xiàn)系統(tǒng)弱點(diǎn)的難度。在 php.ini 文件里設(shè)置 expose_php = off ,可以減少他們能獲得的有用信息。

  另一個(gè)策略就是讓 web 服務(wù)器用 PHP 解析不同擴(kuò)展名。無論是通過 .htaccess 文件還是 Apache 的配置文件,都可以設(shè)置能誤導(dǎo)攻擊者的文件擴(kuò)展名:

  # 使PHP看上去像其它的編程語(yǔ)言

  AddType application/x-httpd-php .asp .py .pl

  # 使 PHP 看上去像未知的文件類型

  AddType application/x-httpd-php .bop .foo .133t

  # 使 PHP 代碼看上去像HTML頁(yè)面

  AddType application/x-httpd-php .htm .html

  要讓此方法生效,必須把 PHP 文件的擴(kuò)展名改為以上的擴(kuò)展名。這樣就通過隱藏來提高了安全性,雖然防御能力很低而且有些缺點(diǎn)。

【淺談PHP 安全性】相關(guān)文章:

PHP安全性漫談07-20

PHP中的安全性知識(shí)10-31

六個(gè)常見PHP安全性攻擊10-04

解析php安全性問題中的Null字符問題10-12

淺談php中curl和fsockopen的應(yīng)用08-26

淺談php自定義錯(cuò)誤日志10-20

淺談php浮點(diǎn)數(shù)比較方法詳解09-02

淺談PHP擴(kuò)展模塊Pecl和Pear以及Perl的區(qū)別07-27

php學(xué)習(xí)之php配置07-15