# 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直接调用;
* 不要缓存需要用户认证的页面;
* 对用户的上传文件,做必要的安全检查,例如上传路径和非法格式;
* 对于项目进行充分的测试,不要生成业务逻辑的安全隐患(这可能是最大的安全问题);
* 最后一点,做好服务器的安全防护,安全问题的关键其实是你的最薄弱的环节;