第十一周作业
1.请用那你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW (string 用户ID,string 密码明文,string 密码密文),返回密码是否正确boolean值,密码加密算法使用你认为合适的加密算法。
此方法是采用的MD5类型的单向加密算法。
2.导致系统不可用的原因有哪些?保证系统稳定高可用的方案有哪些? 请分别列举并简述。
导致故障的原因:硬件故障,软件bug, 系统发布,并发压力,网络攻击,外部灾害。
硬件故障: 部署多个服务器,以负载均衡的方式,分开访问服务器,当一个服务器有故障时,可以访问别的可用的服务器。
软件bug: 使用自动化测试流程,保证软件的可用性。
系统发布: 使用预发布验证功能,保证正式发布的时候,每个模块都是完备的。
并发压力:
流量优化:防盗链处理
前端优化:减少HTTP请求,合并css或js,添加异步请求,启用浏览器缓存和文件压缩,CDN加速,
建立独立图片服务器,
服务端优化:页面静态化,并发处理,队列处理
数据库优化:数据库缓存,分库分表,分区操作,读写分离,负载均衡
web服务器优化:负载均衡,nginx反向代理,7,4层LVS软件
网络攻击:
XSS跨站脚本攻击
输入检查:输入检查一般是检查用户输入的数据中是否包含一些特殊字符, 如<、>、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码
输出检查,对html页面输出的内容进行使用htmlEncode
csrf 跨站请求伪造:请求地址添加token并验证
sql 注入:预编译sql或使用参数化查询
Ddos 攻击:
随机抛弃一部分请求
提高服务器配置
高防IP ->aliyun
idc 机房 ->运营商
外部灾害:异地多活,在多个区域进行服务器部署,在一处服务器出现问题时,调整到别的区域服务器。
评论