A. 怎麼保護你的php源代碼 - PHP進階討論
zend對php5混淆加密好像不能解密吧zend加密php4倒是能解密,不過也只能解密95%左右,通過整個代碼去研究那5%的未知代碼,工作量不小於自己重寫一套程序,甚至更耗時。所以,個人認為zend加密已經很好了。
從這篇文章開始,我們將學習一系列的 PHP 文件系統相關函數。其實這些函數中,有很多都是我們經常用到的,大家並不需要刻意地去記住它們,只要知道有這么個東西,在使用的時候記得來查文檔就可以了。
文件路徑相關的函數往往在一些框架中會比較常見,而且多會配合 __FILE__ 、 __DIR__ 之類的魔術常量使用。
basename() 函數是獲得路徑中的文件名,它有兩個參數,第一個是文件的路徑,第二個是過濾掉的內容,比如第一條測試語句我們過濾掉文件的後綴名。
dirname() 返回的是路徑中的路徑部分,也就是不包含文件名的那部分內容,和 basename() 正好是相反的功能。
pathinfo() 函數用於以數組的形式返迴路徑中的信息,從結果來看,我們可以看到文件的 dirname 部分,basename 部分,以及文件的擴展名 extension 和不包含擴展名的 filename 內容。
realpath() 返回的是規范化的絕對路徑名,它擴展所有的符號連接並且處理輸入的路徑中的 ./ 、 ../ 以及多餘的 / ,返回的內容是標准規范的絕對路徑。
接下來,我們學習一些修改文件相關屬性的函數,主要就是在 Linux 系統環境中的文件許可權信息的操作。
當然,首先我們得創建一個文件。和 Linux 中的命令是非常類似的。
touch() 函數除了給出要創建的文件名之外,還有兩個可選參數可以指定文件的創建時間及訪問時間,不給參數的話默認就是當前時間。這個文件名可以是相對或絕對路徑中有許可權的目錄,並在該目錄下創建一個空的文件。
通過 fileowner() 函數,我們可以獲得某個文件所屬的用戶,默認情況下我們的用戶是當前運行 PHP 腳本的用戶,也就是系統目前的登錄用戶。在這里,我們使用 chown() 函數,將用戶改為 www 用戶。clearstatcache() 是用於清理文件系統的緩存信息,如果不清理一下的話,fileowner() 返回的依然還是之前的用戶信息。
同理,使用 filegroup() 函數獲得文件的屬組信息,chgrp() 用於修改文件的屬組。fileperms() 用於返迴文件的許可權信息,它返回的是數字模式的文件訪問許可權,這里我們使用 sprintf() 格式化結果後獲得我們常用的 Linux 系統許可權格式。chmod() 函數用於修改文件的許可權,它的許可權參數是三個 8 進制數據組成的數字,也就是代表 Linux 系統中的 1 、2 、4 和它們的組合,所以我們需要在前面再加上一個 0 用於確保操作能夠正常執行。關於系統文件許可權的知識大家需要認真學習 Linux 系統中相關的內容。
注意,上述函數如果在命令行中運行失敗,大部分原因是沒有許可權,可以使用 sudo 進行測試。在 fastcgi 中運行時,就更加需要注意許可權問題,僅在我們伺服器可以操作的目錄中進行安全的文件許可權修改。
stat() 函數可以獲取到指定文件的所有屬性信息,在這里我們可以看到文件的 uid 、 gid 、 ctime 、 mtime 等信息。
在 Linux 系統中,有軟連接和硬連接的相關知識。其實軟連接就像是 Windows 中的快捷方式,而硬連接相關於復制了一份數據。在 PHP 中,也為我們提供了創建軟硬連接以及相關的一些操作。
使用 link() 函數創建的就是一個指定文件的硬連接文件,而使用 symlink() 創建的則是一個軟連接文件。相對來說,我們使用軟連接的場景會更多一些。lstat() 就和 stat() 函數的功能一樣,查看文件的各種屬性信息,不過 lstat() 函數針對的是軟硬連接文件。
同樣地,我們也可以修改軟硬連接的用戶和用戶組信息,不過它們的信息不能通過 fileowner() 或 filegroup() 查看。因為它們是連接文件,本身還是和原始文件綁定在一起的,使用 fileowner() 這類的函數查看到的依然是原始文件的信息。我們可以在系統環境中使用 ls -l 查看連接文件的用戶和用戶組信息是否修改成功。
今天的內容比較簡單,而且修改許可權的操作也並不常用。不過對於系統安全來,它們還是非常有用的,比如對於上傳來說,我們要預防上傳可執行文件的話,就可以通過修改文件的許可權來讓文件無法直接運行,從而起到安全保護的作用。另外,目錄路徑相關的操作也是一些框架的基礎,幾乎所有框架的入口或者說是 Composer 的入口,都會見到 dirname() 以及 basename() 之類函數的身影。
測試代碼:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/6.PHP中的文件系統函數(一).php
參考文檔:
https://www.php.net/manual/zh/ref.filesystem.php
C. 怎麼把網頁首頁index.php進行保護
網路安全是網站所有者和用戶最關心的網路問題。近年來,影響各大銀行、零售商和其他領先服務供應商的大規模數據泄露事件成為全世界的頭條新聞,並使用戶比以往更加擔心他們在各種在線交易過程中所分享的敏感個人數據的安全性。向用戶放心,保證他們的其數據不會受到黑客攻擊、身份盜竊和其他類型的在線犯罪的侵害,這對於保持客戶信任至關重要。
如何保護網站的安全?
使用SSL和HTTPS協議保護網站安全是保護在業務過程中收集的敏感數據和向用戶發出網站安全的信號的基本步驟。如果網站以任何方式收集或使用敏感數據,了解這兩種協議如何工作以及如何使用它們來保護您的網站和客戶免受最新一輪網路攻擊是很重要的。
SSL是什麼?
SSL指的是安全套接字層——一種通過加密和身份驗證在網路瀏覽器和伺服器之間傳輸數據時添加密鑰的小型數據文件。要為商業或專業網站配置SSL加密,站點所有者必須獲得SSL證書,該證書充當向用戶宣布網站已由第三方認證機構驗證和認證的標記。SSL的一個更安全的選擇是TLS(傳輸層安全性),站點所有者還可以請求對該證書進行驗證。
並非所有網站都需要SSL證書,但擁有SSL證書對於保護敏感和機密的用戶數據(如支付信息、網站訂閱或注冊數據——如電子郵件地址或用戶名和密碼,以及文件——如健康記錄或納稅申報表)是必不可少的。
SSL或TLS證書為瀏覽器和伺服器之間傳遞的任何通信增加了額外的網站安全層。證書存放在伺服器中,訪問帶有HTTPS的網站時都可以訪問。網站所有者可以從三種不同類型的SSL證書中進行選擇,這取決於站點的性質以及它從用戶收集的信息種類。
通過域驗證(DV)驗證的證書是最低和最不安全的身份驗證形式。對於這類證書,認證機構只需檢查申請人是否是域名的所有者。並不會檢查有關該公司或申請人的其他信息。只進行域驗證的證書通常可以快速而相對便宜地授予,因為幾乎沒有要驗證的信息。DV認證只適用於對機密信息處理最少,而較少關心如何建立可靠的安全交易信譽的網站。
通過組織驗證(OV)驗證的證書提供了比DV證書更徹底的驗證。這種SSL證書不僅驗證域所有權,而且還驗證有關公司所有權和任何相關文件的詳細信息。網站訪問者也可以獲得這一信息,這可以提高網站的透明度和可信度。OV證書比DV證書需要更多的時間,但它為處理低級數據的網站提供了額外的網站安全性,例如為營銷目的收集電子郵件地址。
通過擴展驗證(EV)驗證的證書提供了最高級別的身份驗證和安全性。這些證書只能由經授權的認證機構簽發,並要求對詳細的公司信息進行審查。由於EV證書是時間密集型的,並且代表著最高級別的安全性,所以它們是三種證書中最昂貴的,最最適合處理非常機密信息(如信用卡數據)的網站。
SSL證書安裝在伺服器上,訪問者到達具有標記為安全的HTTPS名稱的站點之後就會激活SSL證書。主機提供商可以為其客戶安裝證書,並且許多提供商允許用戶直接通過他們的主機帳戶來申請證書。必須正確配置虛擬伺服器以接受證書,並且該過程通常由主機服務處理。
什麼是HTTPS?
幾乎所有花時間上網的人都遇到過字母HTTP,它通常出現在每個URL的開頭。HTTP(超文本傳輸協議)是一種通用的、基於文本的協議,它允許客戶機(硬體或軟體的各個部分)連接到伺服器上並檢索數據以供顯示。HTTP是一個不安全的協議,這意味著在客戶機和虛擬伺服器之間傳輸的數據可能容易受到黑客攻擊、網路釣魚和其他類型的網路威脅。
HTTPS改變了這一形式。該協議代表「超文本傳輸協議安全」,它告訴所有潛在的站點訪問者,協議在客戶機和伺服器之間傳輸數據時帶有額外的安全層。與SSL證書類似,一個帶有HTTPS協議而不是HTTP的網站告訴用戶,在站點和瀏覽器之間傳輸的數據是加密的,是安全的。HTTPS協議與SSL證書一起工作。訪問者訪問HTTPS站點時,將激活證書並觸發對傳輸數據的加密。
與附加在網站URL上的HTTPS協議一起,簡單的可視化提示可以告訴訪問者站點是否使用SSL證書進行了加密。由OV和DV證書驗證過的站點在HTTPS旁邊有一個綠色掛鎖,顯示為綠色。擁有最安全EV證書的網站還可以包括一個綠色搜索欄。掛鎖圖標還可以告訴用戶關於站點證書狀態的信息。掛鎖圖標也可以用於傳遞其他消息。例如,黃色掛鎖表明之前頒發的SSL證書已損壞。
可以從一開始就用HTTPS協議和SSL證書配置新網站,也可以重新配置或轉換現有網站以支持這些附加的安全特性。但是,以這種方式將現有網站轉換為更安全的版本可能會產生一些意想不到的問題,因為搜索引擎可能將具有HTTP的網站和具有HTTPS的網站識別為兩個不同的網站。
為了避免由於HTTP和HTTPS站點的存在而引起的問題,專家建議花時間來調整所有可能受切換影響的帳戶和其他活動。這可以包括重新配置網站的所有內容,包括插件、分析或廣告,並設置正確的重定向,以確保客戶能夠進入正確的網站。切換到HTTPS還可以影響舊HTTP站點上的現有鏈接。
在一個竊取或破壞用戶數據的黑客手段日益復雜的時代,SSL證書和HTTPS協議告訴訪問者站點是值得信賴的,安全的,他們最敏感的數據在網站上是安全的。為了進一步阻止黑客的攻擊,您還可以下載安全插件來保護網站。(源自:美國主機-BlueHost)