原创 php-redis源碼之長鏈接、短連接、命令自動檢活

源碼函數所在文件 爲了避免代碼影響閱讀,以及代碼順序不符合個人的讀碼習慣,就不貼代碼了,都可以通過函數名在下面幾個c文件中找到 redis.c library.c common.h 幾個核心函數 redis_connect:用於創建re

原创 關於PHP生產環境的安全配置

;關閉錯誤顯示 display_errors = Off ;配置錯誤日誌 error_log = /var/log/php/error.log ;隱藏PHP版本號 expose_php = Off ;關閉自動註冊全局變量(5.6以

原创 瀏覽器跨域安全和PHP處理

瀏覽器同源策略 如果兩個URL的域名和端口都相同,則表示它們同源。在非同源的情況下,從一個域上加載的腳本(js),是不允許訪問另外一個非同源域中的文檔的。 跨域資源共享 跨域資源共享,是瀏覽器的一種機制,允許應用服務器進行跨域訪問控制,從

原创 PHP的弱數據類型安全

弱類型比較缺陷 若類型,即在變量在使用過程中無需進行類型聲明,數據類型根據代碼執行情況可以動態變換(區別強類型指得是每個變量和對象都必須具有聲明類型,它們是在編譯時就確定了類型都數據,在執行時不能更改)。 由於PHP的若數據類型特性,使得

原创 PHP文件上傳安全

文件上傳漏洞等危害 攻擊者上傳shell腳本,藉助腳本控制服務器,隨意執行命令。 漏洞舉例 <?php $dir = 'uploads/'; $file = $dir . basename($_FILES['file'

原创 關於composer開發部署的思考

composer.lock的實際作用        前段時間在公司開發時,出現了本地的ampq擴展沒有問題,但是發佈到線上之後出現找不到類的錯誤,當時一臉懵逼,於是去看jenkins的部署log,發現shell腳本執行了一個compose

原创 shell個性化配置+vim簡單配置

配置bash_profile,不同文件類型顯示不同顏色,同時下方cmd欄顯示當前目錄,記得source ~/.bash_profile alias ll='ls -l' CLICOLOR=1 LSCOLORS=gxfxcxdxeged

原创 docker常用組合命令和環境搭建

docker命令組合: 下載最新的鏡像:docker pull mysql:latest 查看安裝的鏡像:docker images 刪除某個鏡像:docker rmi <image id> 運行mysql容器,本地端口:容器端口:doc

原创 CI框架執行流程

index.php: 1、處理項目路徑,定義路徑常量 包含 CodeIgniter.php 核心文件 CodeIgniter.php: 1、加載常量文件constants.php 2、加載公共方法文件Common.php 3、關閉自動在溢

原创 Git常用命令

基礎概念 add和commit都是將改動提交到本地倉庫 pull是將遠端倉庫拉到本地並和本地合併 push是將本地倉庫推送到遠端倉庫   回滾commit 本地: git reset --soft|--mixed|--hard <com

原创 Iterm+shell+vim個性化配置

配置打開tab後自動執行的命令 General -> Command -> Login Shell/Command 配置光標,防止誤看 Text -> Cursor -> Vertical 配置字體,我認爲這個是最舒服的 Text ->

原创 SSRF請求僞造攻擊以及PHP中如何避免

概念 攻擊者利用某服務器請求來獲取內網或外網系統權限,暴力請求獲取服務器端口開發情況等。 攻擊流程 攻擊者構造請求 服務器根據攻擊者構造的請求對內網服務器進行請求 內網服務將請求反饋給服務器 服務器將獲取到的內網資源返回給攻擊者 危害 使

原创 PHP使用共享內存進程間通信

創建並寫入數據 <?php $file = __FILE__; $key = ftok($file, 1); $size = 4096; $shmid = shmop_open($key, 'c', 0644, $size); if($

原创 字符串和byte相互轉換,以及pack和unpack處理數據和二進制轉化

最原始的字符串轉byte數組的方法 function string2bytes(string $str) :array { $bytes = []; $len = strlen($str); for($i = 0

原创 PHP實現mb_strlen

UTF-8一個漢字佔2個字符,GBK一個漢字佔3個字符,ASCII碼最大能表示到十進制128,16進制0x80,所以當某個字符當ASCII碼超出最大值128時,則代表中文漢字,再根據編碼跳過對應字節數即可 function mbstrl