相對于Java,C++,C#,Python等語言來說, PHP 在 商城方面有更大的優(yōu)勢,有開發(fā)效率高,框架選擇多,可選擇的開源產品多,可以大大減少開發(fā)成本和加快產品迭代,比如基于Thinkphp框架開發(fā)出的開源商城DSMall,DSHOP,DSKMS等等,基于此類產品開發(fā)可以大大加快開發(fā)速度,讓項目迅速上線,同時Thinkphp框架可直接升級。一般情況下我們在自己開發(fā)的過程中,需要注意PHP安全方面的知識,以下就說一下常見安全問題。
一.SQL注入
SQL注入是常見網(wǎng)站最大的威脅之一,如果數(shù)據(jù)庫受到SQL注入的***,那么可以獲取你全部的數(shù)據(jù)庫。
當前主流的解決方法有兩種。轉義用戶輸入的數(shù)據(jù)或者使用封裝好的語句。一般用一個封裝好的函數(shù),用來對用戶提交的數(shù)據(jù)進行過濾。
二.XSS
XSS又叫CSS (Cross Site Script),跨站腳本***。它指的是惡意***者往Web頁面里插入惡意html代碼,當用戶瀏覽該頁之時,嵌入其中Web里面的html代碼會被執(zhí)行,從而達到惡意***用戶的特殊目的。
正確的做法是堅決不要相信用戶的任何輸入,并過濾掉輸入中的所有特殊字符。這樣就能消滅絕大部分的XSS***
三.XSRF/CSRF跨站請求偽造
它是***者通過一些技術手段欺騙用戶去訪問曾經(jīng)認證過的網(wǎng)站并運行一些操作。
最常用的防御方法是生成一個CSRF令牌加密安全字符串,一般稱其為Token,每次你在網(wǎng)頁構造表單時,將Token令牌放在表單中的隱藏字段,Session里的Token令牌比對,校驗成功才給予通過。
如果在這些TP框架中的開源商城系統(tǒng)中進行二次開發(fā),您這邊需要注意的應該有以下幾點。
1.設置public目錄為唯一對外訪問目錄,不要把資源文件放入應用目錄;
2.開啟表單令牌驗證避免數(shù)據(jù)的重復提交,能起到CSRF防御作用;
3.使用框架提供的請求變量獲取方法(Request類param方法及input助手函數(shù))而不是原生系統(tǒng)變量獲取用戶輸入數(shù)據(jù);
4.對不同的應用需求設置default_filter過濾規(guī)則(默認沒有任何過濾規(guī)則),常見的安全過濾函數(shù)包括stripslashes、htmlentities、htmlspecialchars和strip_tags等,請根據(jù)業(yè)務場景選擇最合適的過濾方法;
5.使用驗證類或者驗證方法對業(yè)務數(shù)據(jù)設置必要的驗證規(guī)則;