這算是大家都知道的技術了吧,因為說實在的,留言板惡意灌水實在是太容易了,就算是檔檔 referer 也是沒用,因為表頭可以自己偽造,那最好的方法就是用 PHP 驗證碼的機制,這個機制利用 GD 縮圖的部份,然後再把驗證數字存放在 SESSION 裡面,不過 PHPBB 的作法是存在 database 資料庫裡面進行比對,然後在 delete 該比資料,畢竟每個連線都有自己的 ssid 的值,所以這樣進行比對,我想是不錯的方法,也可以用在很多地方,那底下是我去 Jax 的工作紀錄 看到的一篇:PHP 驗證碼,拿過來筆記一下。 首先先去 Windows 底下的 Fonts 資料夾,選一個字型吧,因為裡面會用到喔,不然底下這一段 code 會用到
imagettftext($im, 20, 0, 25, 35, $Color,"arial.ttf",$verification__session); /* imagettftext (int im, int size, int angle, int x, int y, int col, string fontfile, string text) im 圖片物件 size 文字大小 angle 0度將會由左到右讀取文字,而更高的值表示逆時鐘旋轉 x y 文字起始座標 col 顏色物件 fontfile 字形路徑,為主機實體目錄的絕對路徑, 可自行設定想要的字型 text 寫入的文字字串 */
其他的就是底下這段程式碼,把他存成 image.php
然後再利用顯示出來就可以了喔,然後傳到 POST 頁面做判斷:
if($_SESSION["verification__session"] != $_REQUEST["image"]) exit("嚴禁惡意的攻擊行為"); else unset($_SESSION["verification__session"]);這樣就完成,記得要 unset 喔,避免重新整理造成多次留言 ‘; ?>
See also
- 來聊聊 PHP & JavaScript & CSS 的 Coding Style
- 為什麼我選擇使用 Laravel Framework?
- OpenSSH 安全性漏洞 CVE-2016-0777 and CVE-2016-0778
- Laravel 搭配 Google, Facebook, Twitter 第三方 OAuth 認證
- 將 wordpress 強制使用 SSL 連線
- PHP 7 vs HHVM Benchmark 比較
- Laravel 50 個小技巧 + Laravel 5.2 新功能
- Laravel Homestead 支援 MySQL 5.7 和 Node 5.0
- PHP-FIG 新網站
- Laravel Homestead 支援 PHP 7