首頁  >  文章  >  後端開發  >  用什麼保護php程式碼安全? screw plus可以!

用什麼保護php程式碼安全? screw plus可以!

藏色散人
藏色散人轉載
2021-08-13 13:41:403430瀏覽

https://github.com/del-xiong/screw-plus

#http://git.oschina.net/splot/php-screw-plus

screw plus是一個開源的php擴展,作用是對php檔案進行加密,網路上提供php加密的服務很多,但大多只是混淆等級的加密,被人拿到加密檔案問只要有足夠耐心就能破解,與之不同的是,screw plus採用擴展來加解密,而且是全球金融業流行的高強度AES256加密,除非破解了伺服器,否則駭客拿到了加密檔案也只是一堆亂碼。

同一個加密等級的有ioncube和官方的zend guard,但這兩款都是收費的,一年至少數千元的費用並不值得一般開發者去嘗試,而使用screw plus,你不需要多花一分錢。

下面以LNMP一鍵安裝環境為例示範下screw plus的設定

先複製一份程式碼到伺服器

git clone https://git .oschina.net/splot/php-screw-plus.git

進入專案目錄,然後執行php的phpize文件,phpize是官方提供的可執行檔用於動態產生擴充開發環境,一般在php的bin目錄下可以找到。 lnmp的phpize在/usr/local/php/bin/phpize

/usr/local/php/bin/phpize

Configuring for :

PHP Api Version:         20100412

Zend Module Api No:      20100525

##piZend Extension A  20100525

#piZend #120
##執行成功後可以看到目前的php api版本,擴充api版本等。下一步就可以開始配置了。設定指令為

./configure --with-php-config=[php-config], [php-config]一般也在php的bin目錄下,寫絕對路徑就可以了。

./configure --with-php-config=/usr/local/php/bin/php-config


如果沒報錯,說明配置成功了,可以開始下一步編譯了。

編譯之前,我們可以修改加密的key,打開

php_screw_plus.h可以看到開頭就是#define CAKEY "..." ,把裡面的值改為一個足夠複雜的key,最好16位元以上,例如:9mqss6q7WsBpTMOZ

vi php_screw_plus.h


##修改完畢之後,直接開始編譯,執行make指令,如果最後顯示Build complete.說明編譯成功,擴展在modules裡面,如果報錯請根據提示進行修復,然後make clean之後重新編譯。

make

...

Build complete.


上面我們編譯的是解密程序,而加密程式也需要我們手動編譯一下,進入tools目錄執行make指令即可。如果沒有報錯,則擴充就全部編譯完成了。

cd tools/

make

然後需要把擴充的路徑加入php.ini中,你可以把modules/php_screw_plus.so複製到php擴充目錄也可以直接在ini加入絕對路徑,我一般傾向於絕對路徑這樣修改編譯了擴充也不需要重新複製過去。

vi php/etc/php.ini

加入絕對路徑例如

extension=/home/php_screw_plus-1.0/modules/php_screw_plus.so


然後重啟php服務這時可以放個php檔案輸出phpinfo訊息,如果看到以下提示說明擴充功能生效了。

用什麼保護php程式碼安全? screw plus可以!下面還有最後一步,加密程式。

在擴充的tools目錄,執行./screw [路徑],[路徑]可以是單一檔案也可以是資料夾,然後就可以實現加密了。

用什麼保護php程式碼安全? screw plus可以!加密完成後查看原始碼,可以發現除了開頭的幾個英文字元外,其餘的都變成亂碼了。

用什麼保護php程式碼安全? screw plus可以!但開啟網站,php運作正常,如同沒有加密。經過測試,解密速度大約為100M每秒,對php自身的效能損失非常小,一般不到20毫秒。

screw plus還有一個功能,可阻止執行未經許可的php文件,這樣駭客就算上傳了程式碼也然並卵。

同樣在

php_screw_plus.h

裡面修改,把STRICT_MODE後面的值改為1,然後make clean && make重新編譯並重啟php,然後打開之前加過密的網站,執行正常,但我們隨意上傳個明文的php文件,結果是一片空白。

原因是未加密的php檔案頭不包含識別key,擴充功能會回傳空內容,就算駭客取得了key並加入也沒用,內容會被解密成亂碼仍然無法執行。經過screw plus的保護,即使網站整站被下載或被上傳了惡意程式碼,也無法對網站造成損失。

推薦學習:《PHP影片教學

以上是用什麼保護php程式碼安全? screw plus可以!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jianshu.com。如有侵權,請聯絡admin@php.cn刪除