Eternal Blues – 免费扫描 Windows 有无勒索病毒漏洞工具

大家还记得前些日子勒索软体(Randomware)在全世界掀起一波严重灾情吗?相信大家对于WannaCry (想哭病毒)还有印象,这类病毒的感染方式多半是将中毒者电脑上硬盘中的文件都加密,威胁必须在期限内支付「比特币」作为赎金才能获取解密钥匙,否则可能会提高赎金甚至让文件无法复原!若没备份就会造成巨大损失。后续当然也出现一些变种病毒,都是使用相同的漏洞进行感染,现在有开发者开发出一款免费工具,可以帮助检测和扫描 Windows 有无勒索病毒的安全漏洞。

Change-System-Locale-in-Windows-10Eternal-Blues

Eternal Blues 是一款免费扫描工具,主要功能为扫描系统有无让WannaCry、Petya 等勒索病毒入侵的漏洞,这个漏洞又被称为“永恒之蓝”(EternalBlue),最初是美国国家安全局(NSA)开发的漏洞利用程序,后来在黑K组织泄漏后被勒索病毒利用。虽然微软后续已经释发放出系统补丁,但在尚未安装更新的电脑依然可能遭受攻击。

继续阅读全文 “Eternal Blues – 免费扫描 Windows 有无勒索病毒漏洞工具”

Redis 并发控制

背景

开发活动报名业务,涉及到活动人数限制的问题,当并发量上来的时候,多人同时提交报名信息,将会导致活动已报名人数的不准确,对业务造成影响,如下图:

分析出现问题的原因是,设置操作发生的时候,并没有确保当前人数的准确性,即没有确保当前查询出来的已报名人数与数据库的一致性,导致客户端并发的两次操作有被覆盖的情况发生

传统数据库 VS NoSql

mysql

针对如上场景,若报名人数字段保存在mysql数据库中,可以使用一种常见的降低读写锁冲突,保证数据一致性的乐观锁机制(Compare and Set CAS),实现方案如下

将原来的操作sql代码

update act set num=#{numNew} where actId=#{actId}

改为

update act set num=#{numNew} where actId=#{actId} and num=#{numOld}

即只有当查询出来的数据与当前数据库的数据一致时,才可以进行赋值操作,否则失败

redis

若使用redis,则活动报名人数以键值对的形式存在内存中,业务代码将会对内存中的人数进行操作,相比mysql,redis的效率更高,不会造成很大的延迟(若当并发量很大时,使用mysql进行报名人数记录,CAS的方案将会导致很多客户端操作失败,用户体验不好),但使用redis,其没有很好的事务支持,以上mysql的解决方案不能很好的运用在redis上,因此如何设计redis锁,进行共享资源(已报名活动人数)的操作,是需要解决的问题

继续阅读全文 “Redis 并发控制”