**用户频繁攻击服务器
描述:网站免费发短信功能,用户通过恶意程序疯狂访问网站发短信,导致数据库访问量过高,数据库服务器死机
解决方案:1、临时解决方案,通过日志查到ip,在nginx或apache入口地址禁止此ip访问,在nginx或apache配置中设置deny.conf,专门添加ip地址
2、程序解决方案,在开发具体项目中,思考一下此项目是否会吸引用户攻击,从程序上防止用户攻击。比如免费短信肯定会引来用户攻击,程序中除了要限制同一用户免费短信数量,还要限制同一ip的用户数量,因为用户很可能批量申请账号,进行攻击。
**通过减少页面js,css文件加载数量,提高用户访问速度
描述:开发过程中,为了代码的可读性和可复用性,将js,css拆分到多个文件中,导致页面加载文件过多,页面访问速度下降
解决方案:通过写脚本,将页面中公共的js,css进行合并,将同一功能模块的js,css进行合并
**通过慢查询日志,解决sql语句问题
描述:数据库down机,通过查询日志,发现大量用户账户表的查询,而且条件没有用上索引
解决方案:修改程序或建立索引,减少慢查询sql数量。要定期分析慢查询日志,减少效率低下的sql语句
**用人不当,低水平的人写安全性要求高的代码漏洞百出
描述:写注册登陆的程序员,考虑安全性问题不够全面,所以出现问题比较多,比如账号重复问题等
解决方案:对于新程序员,要有计划地一步步把重任交给他,不要一下把非常重要地任务交给他。新人入职,要分配简单任务,一步步加大难度,摸清手底下程序员的水平。
**从程序和数据库又保险保证安全性
描述:网站出现重复账号,而且重复账号之间自增id紧挨着
解决方案:1、查错解决问题:检查程序,看程序里有没有连续重复插入用户账号,并没有发现sql异常;检查数据表,发现account字段不是唯一键,删除重复账号,为唯一键建立索引,监控错误日志。有可能是用户恶意注册,并发导致的问题。
2、开发中避免:通过解决问题总结出,开发中,要从程序和数据库设计两方面避免出现问题。考虑安全性时,除考虑正常访问的用户,还要考虑恶意用户并发请求,所以数据库中建唯一键是最根源的办法。
**数据库sql导致服务器down机
描述:wap服务器接连down机,将php使用内存调小后底层数据库封装报超出内存大小错误,经查看代码,发现底层封装findOne方法没有自动加limit 1,程序里有一句查询语句,结果集很大,但想取一行,sql语句没有加limit 1。
解决方案:1、封装底层数据库的时候,一定要注意限制结果集过大,对所有的查询都要加上limit,保证结果集不会太大; 2、同时写前端sql里,不要相信底层封装,养成限制sql结果集大小的习惯; 3、要熟练掌握php、apache(nginx)、mysql的配置参数,针对不同的问题不断优化配置。
**新人接手19pay后缺少文档
描述:19pay计费项目历时比较,由于此项目程序员离职,新人拉手时需要一些文档,但是此项目的沟通完全交给程序员做了,离职后公司没有文档
解决方案:项目开发交给一程序员做,沟通工作要部分给程序员,不要全部交给程序员,一定注意对文档性内容的保存。