项目开发安全经验总结

  • 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、写在最后

以上都是本人历年经验总结,写的不多,更谈不上详细,更多细节需要读者自己补充完善,算是抛转引玉吧。
欢迎拍砖。

项目开发安全经验总结相关推荐

  1. java项目开发实践经验每日总结(2014/2/22)

    2014/2/22 1.阅读分析代码可以从需求逻辑层,业务逻辑层,目录结构层,包结构层,类结构层,方法结构层,代码结构层,方法实现结构层,语法结构层 2.单页的代码结构 所属包,导入文件和包,公共类( ...

  2. Unity3D项目开发一点经验

    我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中.默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体. 注意事项如下: 1.面数控制 在MAX软件中 ...

  3. 基于J2EE架构的项目开发团队中的角色与职责

    [声明] 1.2内容来源:<J2EE Architects Handbook>中文翻译<J2EE系统架构师参考手册>[翻译 Mellon] 1.角色 Technical arc ...

  4. 【经验】Qt项目开发必备工具

    在实际的项目中,除了需要掌握Qt开发框架本身,还需要掌握一些开发工具.这些工具能起到事半功倍的效果,甚至某些工具是开发不可或缺的.下面笔者就介绍一些常用的开发工具的用法及下载地址,希望对缺少实际项目经 ...

  5. 使用Unity开发项目的一点经验

    使用Unity开发项目的一点经验 我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中. 默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体. 注意事项 ...

  6. gitee项目能用SVN拉取吗_使用Git开发维护Github开源项目的一些经验

    Github无法访问/访问慢的经验 github经常会因为一些原因抽风,无法访问,这时候,可以使用gitee同步github项目,然后从gitee拉项目.在gitee导入项目以后,项目名称后面有个同步 ...

  7. APP项目开发失败案例经验汇总

    今天和大家分享一下之前碰到比较典型的APP项目开发失败案例,教训是残酷的,经验是宝贵的,整理了三个案例,如果大家看完觉得还行,给个辛苦赞~ 失败的外包案例(一) 项目名称:XXXAPP开发双版本 项目 ...

  8. profinet通讯 西门子PROFINET 开发 远程IO 有实际项目产品应用经验 提供整套方案

    profinet通讯 西门子PROFINET 开发 远程IO 有实际项目产品应用经验 提供整套方案 1.方案经过批量生成应用,稳定使用. 2.有资料文档 3.应用笔记 4.硬件pcb,原理图源文件,原 ...

  9. python项目开发实战-给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

最新文章

  1. 阿里某员工发飙:给我一点陪家人的时间行吗?真的想走了!
  2. 计数排序/Counting Sort
  3. 【AI白身境】学AI必备的python基础​​​​​​​
  4. apache php mysql 开发_Wndows下Apache+php+Mysql环境的搭建及其涉及的知识(转)
  5. 4.OD-调试示例1
  6. python发展路线_Python进阶路径-从学徒到大师
  7. SAP License:FI权限需要控制利润中心
  8. java 判断 继承接口_java基础-接口、继承、多态
  9. javascript常用函数大全
  10. 组态王通过TCP和MCGS触屏通讯
  11. PhotoShop简介
  12. FPGA之JESD204B接口——总体概要 实例上
  13. 数据的力量 |《2021—2022中国大数据行业发展报告》发布
  14. 【电商运营】试试这5种个性化营销方法,告别无效营销!
  15. 如何用一个makefile编译多个目标
  16. 算法笔记.胡凡 第五章 数学问题
  17. mysql CONCAT和DATE_ADD函数的使用
  18. 为什么建议选英文技术书籍
  19. mysql 3日内_一门三父子
  20. win10引导安卓x86_手把手给你传授win10系统安卓模拟器使用的处理方法

热门文章

  1. MySQL之SQL语句练习
  2. oracle去除字段里的汉字
  3. ElasticSearch Docker 部署实例
  4. mysql火焰图_Linux 性能分析利器 -火焰图 flame graph
  5. jquery点击图片放大,再点缩小(转)
  6. 【性能测试】性能测试的基本流程
  7. Maven 项目查找 jar 包是由哪个依赖引入的
  8. chrome无痕模式可访问但正常模式访问不了
  9. mysql之函数创建
  10. MySQL中如何定义一个自己写的函数