Louissu

@Louis-Su

Joined on Sep 19, 2019

  • 什麼是單例模式 單例模式是一種 design pattern,要求一個 Class 只能有一個實例,通常會使用在系統中需要一個全局物件的情況。 在實作時的邏輯就是:「一個 Class 只能有一個儲存自身實例化的靜態變數 $instance 、和一個獲得這個變數的靜態方法 getInstance() 」 實際在使用時會 call getInstance() 這個靜態方法,他會檢查 $instance 是否為空,若不為空則回傳,若為空則實例化 Class 賦予 $instance 並回傳。 以PHP為例 <?php final class Singleton {
     Like  Bookmark
  • 什麼是 Git? Git 是一種分散式版本控制系統。 版本控制系統? 未導入版本控制系統之前,我們對專案進行修改或整合時,必須耗費大量的人力來對程式碼做備份和比對的工作。這在專案規模逐漸擴大或是多人協作的場景時,每個人的程式碼進度不一,哪段程式碼被修改或覆蓋?這段程式碼和上一次的版本有什麼不同?導致程式碼混亂不堪,難以維護,而版本控制系統就是要解決這樣的問題。 分散式? 版本控制主要分為集中式(Centralized Version Control Systems,CVCSs)和分散式(Distributed Version Control Systems, DVCSs)兩種,前者如 SVN,後者如 Git。 在 Git 中,每個協作者都會擁有一個自己完整的版本庫,你可以在自己的版本庫中盡情的開 branch、修改程式碼,只要不 push 到主要的版本庫,你不會影響任何一個與你協作的夥伴。
     Like  Bookmark
  • 什麼是 Composer? Composer 是 PHP 用來管理套件的工具,是現代 PHPer 必備的武器之一。 為什麼我們需要 Composer? 在沒有使用 Composer 的情況下,每使用一個套件就必須 include 一次,套件又可能相依其他套件,於是我們又要再 include 那個套件。 若是自己開發的小專案還沒關係,要是專案一大起來,可能會有兩種情況,一種是不同的情況需要不同的套件,於是 include 就散落在各個檔案中,難以管理;另一種就是在程式進入點一次 include 一大堆,include 相連到天邊。
     Like  Bookmark
  • --- tags: 學習筆記, 資安, PHP --- 使用 PHP 獲取使用者 IP 以及漏洞分析 === 工作上有這樣的需求,需要在使用者訪問網站之後獲取 IP 並儲存,花了一些時間研究,也發現很多有趣的地方,特地記錄下來。 市面上常見的方法 --- 其實要得到使用者 IP 這件事情本身不難,拿磚頭往大學資工系隨便砸,砸到的那個學生應該都有辦法回答這個問題,以 PHP 來說不外乎是去讀取 `$_SERVER` 這個預定義變數,包含了一大堆的參數可以對應到不同的值,這些值可能有可能沒有,有些可以偽造有些無法偽造。 主要是透過 `$_SERVER['HTTP_CLIENT_IP']` 、 `$_SERVER['HTTP_X_FORWARDED_FOR']` 、 `$_SERVER['REMOTE_ADDR']` 等等的值來取到 IP。 問題 --- 接下來就是有趣的地方了,這些值除了 `$_SERVER['REMOTE_ADDR']` 以外**都是可以偽造的**,但唯一可靠的 `$_SERVER['REMOTE_ADDR']` 得到的未必是使用者真實的 IP ,例如使用者有代理伺
     Like  Bookmark