项目开发安全经验总结
项目开发安全经验总结
- 1、 安全思维
- 2、 Linux/Windows服务器安全
- a) 系统安全
- b) 权限控制
- c) 定时检测
- d) 记录操作日志,定时保护日志
- 3、 Nginx/Apache安全
- 4、 Mysql 数据库安全
- 5、 Php web运行环境安全
- 6、 程序安全
- a) 页面限制
- b) 参数限制
- c) 行为限制
- d) 安全监控
- e) Mysql数据接口
- f) 风险控制机制
- 7、 Memcache 、 Redis等缓存服务器
- 8、写在最后
1、 安全思维
- A)严格控制权限,最小业务授权;
- B)记录详细日志,快速完整识别追查问题发生的位置;
- C)定时备份(完整备份、每日增量备份),增加业务恢复可能;
- D)数据通信加密(HTTPS+高级别SSL证书),数据保存加密(RSA 4096bits);
- E)定时检测(特别是晚上10点到凌晨6点),关注异常行为。
2、 Linux/Windows服务器安全
a) 系统安全
- i. 使用稳定高版本的成熟系统
- ii. 定时升级软件,打补丁
b) 权限控制
- i. 限制端口开放
- ii. 限制ip访问(最好禁用IPv6,研究比较少)
- iii. 限制各类应用,分别给予专用 用户名/用户组
- Php: www用户 www用户组
- Mysql: mysql用户 mysql用户组
- ftp: ftp用户 ftp用户组
- iv. 限制目录权限
- 限制正常目录/文件的权限,修改为root:root 755权限
- 限制上传目录的权限,修改为www:www 700权限
- 限制上传的文件权限,修改为644权限
c) 定时检测
本项内容需要编写bash、sh脚本,配置计划任务来实现。
- i. 监测系统用户,发现新增用户,异常权限用户马上报警
- ii. 监测文件写入,特别是可执行文件,脚本的写入
- iii. 监测并记录异常时间段的正常访问:ssh / mysql等
d) 记录操作日志,定时保护日志
通过定时转移项目日志,修改日志权限来保护日志。
3、 Nginx/Apache安全
- A)调整日志格式,记录更详细信息:多种用户IP,post数据等
- B)采用HTTPS通信,使用高级别的SSL证书
- C)Set-Cookie:HttpOnly、Secure / X-Frame-Options SAMEORIGIN
- D)根据业务过滤常见的GET类型攻击
- E)严格控制上传的文件,并限制上传目录执行web脚本文件。
4、 Mysql 数据库安全
- A)Root用户限制远程登录。必须使用远程超级用户的,一定要限制IP
- B)每个应用专用一个账号,指定访问IP,限制权限范围。上线运行时,只给Select_priv、Insert_prive、Update_priv、Delete_priv权限。更特殊的可根据数据表,甚至数据字段来授权。
- C)开启binlog日志
5、 Php web运行环境安全
- A)使用disable_functions限制风险函数的执行,在不影响业务下可开启安全模式。
- B)expose_php off 防止暴露源码
- C)记录错误日志
- D)合理配置线程工作模式与子进程数量,防止程序崩溃。
6、 程序安全
a) 页面限制
- i. 限制页面的访问
- ii. 限制页面的访问次数/频率
b) 参数限制
- i. 限制参数数量,制作页面参数白名单
- ii. 限制参数类型,过滤参数内容
- iii. 限制参数输出,防止XSS攻击,防止关键参数泄露
c) 行为限制
- i. 验证数据提交防止被篡改,一次一码 md5(uniqid())
- ii. 限制验证码类使用次数
- iii. 限制密码类错误尝试次数
d) 安全监控
- i. 监控超级用户/管理员的权限异常
- ii. 监控并记录超级用户/管理员的操作行为
- iii. 监控核心变量的异常
e) Mysql数据接口
- i. 生产环境,禁止异常sql命令,特别是 权限修改 跟into file这类sql命令;
- ii. 规范Sql命令,保障参数安全。
f) 风险控制机制
- i. 程序源代码加密,减缓代码暴露核心参数;
- ii. 核心数据采用加密存储(RSA 4096bits),保护核心数据直接暴露;
- iii. 如采用api接口通信的,最好对数据加密后再传输(HTTPS也是可以被钓鱼的)。
7、 Memcache 、 Redis等缓存服务器
- a) 限制使用IP,仅限本机使用;
- b) 严禁缓存核心数据,防止关键参数泄露。
8、写在最后
以上都是本人历年经验总结,写的不多,更谈不上详细,更多细节需要读者自己补充完善,算是抛转引玉吧。
欢迎拍砖。
项目开发安全经验总结相关推荐
- java项目开发实践经验每日总结(2014/2/22)
2014/2/22 1.阅读分析代码可以从需求逻辑层,业务逻辑层,目录结构层,包结构层,类结构层,方法结构层,代码结构层,方法实现结构层,语法结构层 2.单页的代码结构 所属包,导入文件和包,公共类( ...
- Unity3D项目开发一点经验
我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中.默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体. 注意事项如下: 1.面数控制 在MAX软件中 ...
- 基于J2EE架构的项目开发团队中的角色与职责
[声明] 1.2内容来源:<J2EE Architects Handbook>中文翻译<J2EE系统架构师参考手册>[翻译 Mellon] 1.角色 Technical arc ...
- 【经验】Qt项目开发必备工具
在实际的项目中,除了需要掌握Qt开发框架本身,还需要掌握一些开发工具.这些工具能起到事半功倍的效果,甚至某些工具是开发不可或缺的.下面笔者就介绍一些常用的开发工具的用法及下载地址,希望对缺少实际项目经 ...
- 使用Unity开发项目的一点经验
使用Unity开发项目的一点经验 我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中. 默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体. 注意事项 ...
- gitee项目能用SVN拉取吗_使用Git开发维护Github开源项目的一些经验
Github无法访问/访问慢的经验 github经常会因为一些原因抽风,无法访问,这时候,可以使用gitee同步github项目,然后从gitee拉项目.在gitee导入项目以后,项目名称后面有个同步 ...
- APP项目开发失败案例经验汇总
今天和大家分享一下之前碰到比较典型的APP项目开发失败案例,教训是残酷的,经验是宝贵的,整理了三个案例,如果大家看完觉得还行,给个辛苦赞~ 失败的外包案例(一) 项目名称:XXXAPP开发双版本 项目 ...
- profinet通讯 西门子PROFINET 开发 远程IO 有实际项目产品应用经验 提供整套方案
profinet通讯 西门子PROFINET 开发 远程IO 有实际项目产品应用经验 提供整套方案 1.方案经过批量生成应用,稳定使用. 2.有资料文档 3.应用笔记 4.硬件pcb,原理图源文件,原 ...
- python项目开发实战-给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
最新文章
- 阿里某员工发飙:给我一点陪家人的时间行吗?真的想走了!
- 计数排序/Counting Sort
- 【AI白身境】学AI必备的python基础​​​​​​​
- apache php mysql 开发_Wndows下Apache+php+Mysql环境的搭建及其涉及的知识(转)
- 4.OD-调试示例1
- python发展路线_Python进阶路径-从学徒到大师
- SAP License:FI权限需要控制利润中心
- java 判断 继承接口_java基础-接口、继承、多态
- javascript常用函数大全
- 组态王通过TCP和MCGS触屏通讯
- PhotoShop简介
- FPGA之JESD204B接口——总体概要 实例上
- 数据的力量 |《2021—2022中国大数据行业发展报告》发布
- 【电商运营】试试这5种个性化营销方法,告别无效营销!
- 如何用一个makefile编译多个目标
- 算法笔记.胡凡 第五章 数学问题
- mysql CONCAT和DATE_ADD函数的使用
- 为什么建议选英文技术书籍
- mysql 3日内_一门三父子
- win10引导安卓x86_手把手给你传授win10系统安卓模拟器使用的处理方法