发表于: 2017-12-01 23:54:16
3 621
今天做的事情:
1: 短信防攻击: 在比较正式得场景,要严格使用者6条,我比较倾向去流程限定。
1.【绑定图型校验码】——将图形校验码和手机验证码进行绑定,当用户输入手机号码以后,需要输入图形校验码才可以触发短信,这样能比较有效的防止 软件恶意点击。现在大型网站都采用此方式。
2.【流程限定】——将手机短信验证和用户名注册分成两个步骤,用户在注册成功用户名密码后,下一步才进行手机短信验证。
3.【触发条件】——用户必须填写好所有注册信息才可进行触发,注册资料不完整无法发送验证码。
4.【短信发送间隔设置】——设置同一号码重复发送的时间间隔,一般设置为60-120秒;
5.【IP限定】——设置每个IP每天的最大发送量;
6.【发送量限定】——设置每个手机号码每天的最大发送量;
思路:注册过之后,再次输入同样手机号。就限制在5分钟之后。我的做法是使用memcached缓存,前台传来手机号,放入缓存,设置过期时间为5分钟。在这期间,重复手机号不发验证码。
logger.info("缓存中的phone"+memCachedClient.get("phone"));
if(phone.equals(memCachedClient.get("phone"))){
session.setAttribute("data","重复手机号请在5分钟之后再次注册!");
}else{
sms.sendMessage(phone,s);
session.setAttribute("msg",i);
try {
response.getWriter().print(flag);
logger.info("发送到页面的随机验证码"+s);
} catch (IOException e) {
e.printStackTrace();
}
}
而我本来的思路是:在注册之后,在数据库新建这个电话表,id自增,phone手机号,count数量,sta状态。使用同一手机号验证,便去修改count数量,判断count是否大于等于5,再发送前台提示用户手机号次数已到最大数量,明天再注册,然后再做一个定时任务,每天的0点,将电话表里的状态改为0,而我设置默认是1,查询条件也是状态为1的。这样也可以做,只不过,用的时间比较多。
2: 邮箱的防攻击
在搜索邮箱的防攻击更多的是用户和企业怎样识别自己邮箱的邮件是不是黑客篡改之后发过来的,解决方案,可以使用邮箱软件来作为接受,查看邮箱的域名。而网上并没有需要像网站发送邮箱这样的防攻击。
更何况,我做的方案是,用户在通过验证码注册之后,登录成功,才会发送给客户邮件,所以不知不觉,防止恶意获取邮件的解决代码不用再次编辑了,原来的就满足条件。
3: 第三方图片存储如何做略缩图,防盗链。
做略缩图的原因是,如果上传图片比较大,项目使用的图片很多的情况,加载原图会很慢,而如果显示略缩图,速度会提升很多。我用的是七牛云,而七牛云提供了强大的图片处理功能,修改一下就可以使用。
具体不再描述,链接:http://blog.csdn.net/codepython/article/details/51584818
原图:
略缩图:
4:防盗链
通过判断request请求头的refer是否来源于本站。首先我们去了解下什么是HTTP Referer。简言之,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
任务要求使用两种云存储API功能对比,所以使用了一下阿里云的。并没有成功,还没有琢磨透,少一些参数。因为阿里云功能太多了,不像七牛云,很简单就可以找到所需要的AK,SK什么的。
上传byte数组
// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId,accessKeySecret);
// 上传
byte[] content = "Hello OSS".getBytes();
ossClient.putObject("<yourBucketName>", "<yourKey>", new ByteArrayInputStream(content));
// 关闭client
ossClient.shutdown();
跑通阿里云的上传图片,再做防盗链吧。
遇到的问题:
见上文
收获:
只是实现功能是最简单的,但是要安全无隐患很难。比如我自己在操作时,也会不停的点,当自己做防止用户不停点的时候,才知道酸爽。了解短信通道的防攻击和邮箱的。七牛云的略缩图,阿里云上传存储,还有防盗链的作用。
评论