# Niushop開源商城系統安全建議
---
1. ### **防止sql注入**
thinkphp查詢針對sql注入有明確的防止方法,所以查詢數據盡量使用數組進行字段組合,防止使用連接sql查詢表達式
比如:上面實例通過數組組合形式查詢數據這樣可以針對sql注入進行轉義,下面直接字符串組裝形式,不會對查詢進行轉義,易被sql注入。
```php
/**
* 獲取公告詳情
*/
public function getNoticeDetail($id)
{
$cache = Cache::tag("niu_notice")->get("getNoticeDetail" . $id);
if (empty($cache)) {
$notice = new NsNoticeModel();
$res = $notice->getInfo([
"id" => $id
]);//通過數組查詢數據
Cache::tag("niu_notice")->set("getNoticeDetail" . $id, $res);
return $res;
} else {
return $cache;
}
}
```
```php
/**
* 獲取公告詳情
*/
public function getNoticeDetail($id)
{
$cache = Cache::tag("niu_notice")->get("getNoticeDetail" . $id);
if (empty($cache)) {
$notice = new NsNoticeModel();
$res = $notice->getInfo("id=".$id);//錯誤方式,通過直接組合字符串查詢
Cache::tag("niu_notice")->set("getNoticeDetail" . $id, $res);
return $res;
} else {
return $cache;
}
}
```
### **2. 防止上傳漏洞**
niushop針對不同的文件形式上傳進行了專門的封裝,這樣只要按照指定要求格式上傳就可以了,具體上傳類在data/service/Upload.php,實現方法參考后臺功能開發中上傳開發.
上傳類中定義了普通圖片,文件,壓縮文件,相冊圖片的上傳設置,如果不能滿足需求可以根據實際情況進行開發.
### **3. 增加訪問權限,守住上傳路徑關卡**
nginx或者apache針對上傳目錄upload增加不能訪問php文件限制
例如apache: RewriteRule upload/\(.\*\).\(php\)$ – \[F\]
### **4. 配置文件讀寫權限防止文件篡改**
配置系統除upload,以及runtime輸入755權限,其他文件以及文件夾555權限
### **5. 配置模板訪問權限,針對特定模板防止其他人盜用**
針對系統文件路徑中wap與web目錄可以設置訪問權限,防止外部訪問html文件。
### **6. 其它的一些安全建議**
* 對所有公共的操作方法做必要的安全檢查,防止用戶通過URL直接調用;
* 不要緩存需要用戶認證的頁面;
* 對用戶的上傳文件,做必要的安全檢查,例如上傳路徑和非法格式;
* 對于項目進行充分的測試,不要生成業務邏輯的安全隱患(這可能是最大的安全問題);
* 最后一點,做好服務器的安全防護,安全問題的關鍵其實是你的最薄弱的環節;