<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      [進階知識]PHP程序安全策略

      [摘要]安全編譯  PHP最初是被稱作Personal Home Page,后來隨著PHP成為一種非常流行的腳本語言,名稱也隨之改變了,叫做Professional HyperText PreProcessor。以PHP4.2為例支持它的WEB服務器有:Apache, Microsoft Internet...

      安全編譯

        PHP最初是被稱作Personal Home Page,后來隨著PHP成為一種非常流行的腳本語言,名稱也隨之改變了,叫做Professional HyperText PreProcessor。以PHP4.2為例支持它的WEB服務器有:Apache, Microsoft Internet information Sereve, Microsoft Personal web Server,AOLserver,Netscape Enterprise 等等。

        PHP是一種功能強大的語言和解釋器,無論是作為模塊方式包含到web服務器里安裝的還是作為單獨的CGI程序程序安裝的,都能訪問文件、執行命令或者在服務器上打開鏈接。而這些特性都使得PHP運行時帶來安全問題。雖然PHP是特意設計成一種比用Perl或C語言所編寫的CGI程序要安全的語言,但正確使用編譯時和運行中的一些配置選項以及恰當的應用編碼將會保證其運行的安全性。

        一、安全從開始編譯PHP開始。

        在編譯PHP之前,首先確保操作系統的版本是最新的,必要的補丁程序必須安裝過。另外使用編譯的PHP也應當是最新的版本,關于PHP的安全漏洞也常有發現,請使用最新版本,如果已經安裝過PHP請升級為最新版本:4.2.3。

        相關鏈接:http://security.e-matters.de/advisories/012002.html

        安裝編譯PHP過程中要注意的3個問題:

        1、只容許CGI文件從特定的目錄下執行:首先把處理CGI腳本的默認句柄刪除,然后在要執行CGI腳本的目錄在http.conf 文件中加入ScriptAlias指令。

        #Addhadler cgi-script .cgi

        ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

        <Directory "/usr/local/apache/cgi-bin'>

        AllowOverride None

        Options None

        Order allow,deny

        Allow from all

        </Directory>

        <Directory "/home/*/public_html/cgi-bin">

        AllowOverride None

        Options ExecCGI

        Order allow,deny

        Allow from all

        </Directory>

         

        SriptAlias的第一個參數指明在Web中的可用相對路徑,第二個參數指明腳本放在服務器的目錄。應該對每個目錄

        別名都用Directory,這樣可使得除系統管理員之外的人不知道Web服務器上CGI腳本的清單。

        Directory允許用戶創建自己的CGI腳本。也可用SriptAliasMatch,但Directory更容易使用。 允許用戶創建自己

        CGI腳本可能會導致安全問題,你可能不希望用戶創建自己的CGI。 Apache默認配置是注釋掉cgi—script的處理句柄,但有/cgi-bin目錄使用SriptAlias和Directory指令。 你也可禁止CGI執行,但仍允許執行PHP腳本。

        2.把PHP解析器放在web目錄外

        把PHP解析器放在Web目錄樹外是非常重要的做法。這樣可以防止web服務器對PHP的解析器的濫用。特別是

        不要把PHP解析器放在cgi-bin或允許執行CGI程序的目錄下。然而,使用Action解析腳本是不可能的,因為用Action指令時,PHP解析器大多數要放在能夠執行CGI的目錄下只有當PHP腳本作為CGI程序執行時,才能把PHP解析器放在Web目錄樹之外。

        如果希望PHP腳本作為CGI程序執行(這們可以把PHP解析器放在Web目錄樹之外),可以這樣:

        ( 1)所有的PHP腳本必須位于能執行CGI程序的目錄里。

        ( 2)腳本必須是可執行的(僅在UNIX/Linux機器里)。

        (3)腳本必須在文件頭包括PHP解析器的路徑。

        你可用下面命令使PHP腳本為可執行:

        #chmod +x test.php4

        這樣使在當前目錄下的文件名為test.PhP4的腳本變為可執行。 下面是一個能作為CGI程序運行的PHP腳的小例子。

        #!/usr/local/bin/php

        echo "This is a my small cgi program”

        3. 按Apache模塊方式安裝:

        當將PHP作為Apache模塊使用時,它將繼承Apche的用戶權限(一般情況下用戶為“nobody”)。這一點對于安全性和驗證有不少影響。例如,使用PHP訪問數據庫,除非數據庫支持內建的訪問控制,將不得不設置數據庫對于用戶“nobody”的可訪問權限。這將意味著惡意的腳本在沒有訪問用戶名和密碼,也能訪問并修改數據庫。通過Apache驗證來保護數據不被暴露,或者也可使用LDAP、.htaccess文件等設計自己的訪問控制模型,并在PHP腳本中將此代碼作為其中部分引入。 通常,一旦安全性建立,此處PHP用戶(此情形即Apache用戶)就風險大大降低了,會發現PHP護現在已被封禁了將可能的染毒文件寫入用戶目錄的能力。 此處最常犯的安全性錯誤是賦予Apache服務器根(root)權限。 將Apache用戶權限提升到根權限是極端危險的?赡軙<罢麄系統,因此要小心使用sudo,chroot安全隱患大的命令等。除非你對安全有絕對的掌握,否則不要讓其以ROOT權限運行。




      日韩精品一区二区三区高清