写点什么

第十一周作业

用户头像
胡江涛
关注
发布于: 2020 年 08 月 25 日
第十一周作业

1.请用那你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW (string 用户ID,string 密码明文,string 密码密文),返回密码是否正确boolean值,密码加密算法使用你认为合适的加密算法。



此方法是采用的MD5类型的单向加密算法。

using System;
using System.Security.Cryptography;
using System.Text;
namespace ConsolePassWord
{
class Program
{
static void Main(string[] args)
{
string userID = "123";
string strPwd = "pw123456";
string strPwdEncrypt = "94F9A918EE6B78C2DBF04AF54D833A5E";
bool checkSuccess= checkPW(userID, strPwd, strPwdEncrypt);
Console.WriteLine(checkSuccess);
Console.ReadKey();
}
public static bool checkPW(string userID, string strPwd, string strPwdEncrypt)
{
string str = EncryptPwd(userID, strPwd);
return strPwdEncrypt == str;
}
public static string EncryptPwd(string userID, string strPwd)
{
string pwdEncrypt = "";
// 实例化一个md5对像
MD5 md5 = MD5.Create();
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(strPwd));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = 0; i < s.Length; i++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
pwdEncrypt = pwdEncrypt + s[i].ToString("X");
}
return pwdEncrypt;
}
}
}



2.导致系统不可用的原因有哪些?保证系统稳定高可用的方案有哪些? 请分别列举并简述。



导致故障的原因:硬件故障,软件bug, 系统发布,并发压力,网络攻击,外部灾害。

硬件故障: 部署多个服务器,以负载均衡的方式,分开访问服务器,当一个服务器有故障时,可以访问别的可用的服务器。

软件bug: 使用自动化测试流程,保证软件的可用性。

系统发布: 使用预发布验证功能,保证正式发布的时候,每个模块都是完备的。

并发压力:

流量优化:防盗链处理

  前端优化:减少HTTP请求,合并css或js,添加异步请求,启用浏览器缓存和文件压缩,CDN加速,

建立独立图片服务器,

  服务端优化:页面静态化,并发处理,队列处理

  数据库优化:数据库缓存,分库分表,分区操作,读写分离,负载均衡

  web服务器优化:负载均衡,nginx反向代理,7,4层LVS软件

网络攻击

XSS跨站脚本攻击

  • 输入检查:输入检查一般是检查用户输入的数据中是否包含一些特殊字符, 如<、>、'、"等,如果发现存在特殊字符,则将这些字符过滤或者编码

  • 输出检查,对html页面输出的内容进行使用htmlEncode

csrf 跨站请求伪造:请求地址添加token并验证

sql 注入:预编译sql或使用参数化查询

Ddos 攻击:

  • 随机抛弃一部分请求

  • 提高服务器配置

  • 高防IP ->aliyun

  • idc 机房 ->运营商

外部灾害异地多活,在多个区域进行服务器部署,在一处服务器出现问题时,调整到别的区域服务器。

用户头像

胡江涛

关注

放肆才叫青春 2019.05.11 加入

IT软件工程师,一枚

评论

发布
暂无评论
第十一周作业