有哪些话一听就知道一个程序员是个水货?
我某个朋友,说他找到我网站漏洞了,已经把我的库子拖了。。。
我问他什么漏洞,他说SQL注入
我说你看过库子了吗?他说看了还找到超管帐户了
然后他就跟我讲,说我哪里都防御了,但是百密一疏,浏览器UA再记录日志时没有过滤,被成功拖库子了,然后吧啦吧啦一大顿,说SQL注入应该这么防那么防,只这样过滤不行啥的。
我默默的说了句“您老看看超管用户名是啥?”
“Honeypot。。。”
2024.10.06-1 补充
可能有人没有理解,他拖的数据库是蜜罐,单独的数据库里面啥有用的都没有,都是垃圾数据,我故意把里面的超管用户名设置成“Honeypot”来挑衅
•ᴗ•
2024.10.06-2 补充
服务器用了反向代理,蜜罐是单独的代理,我故意挑衅攻击者,他ddos我就关代理,不影响正常服务;真实服务有多个代理和流量清洗,而且一般不会被当作攻击目标,因为访问要带签名和验证参数,否则返回500(伪装成服务器内部错误),只要不是刻意有目标的攻击,网上扫到的一看500一般都不会搭理
վ'ᴗ' ի
还是我那个朋友。。。
他:大宁,你说http用户在登录时应该怎么防止数据被抓包后复制使用?
我:重放攻击啊?给登录请求加一个时间戳和验证参数呗,请求时间戳、用户名、密码三样拼接一个字符串MD5做验证参数,收到后检查时间戳是否过期或者同一用户同一时间是否请求过一次,没问题就检查三要素与验证参数是否匹配,匹配则有效,重放会因为过期或者已经请求过一次而无效,每个登陆请求缓存15秒,时间戳过期时间10秒。
他:时间戳伪造咋整,人家抓包后重新加时间戳重新计算?
我:额...你别说你没HTTPS还明文发送?把数据打包后RSA后发送啊,私钥不泄露谁能给你单独篡改?
[过了一段时间后...]
他:RSA太麻烦了,我想了个简单的好办法,直接把密码原文和时间戳拼接计算MD5后在发送,然后再单独发时间戳,收到先验证时间戳,没过期再验证再计算MD5验证是否被篡改,如果篡改了时间戳就没法重新计算回MD5,那就是被篡改了
我:???你明文保存用户密码吗
他:明文保存是大忌,我能犯那毛病嘛,加盐哈希保存
我:你登录把密码的MD5再次拼接MD5?你后端没有二次哈希?
他:有啊,我拼接的原密码啊
我:?你认真的,牛批
他:咋啦?
我:你试试就知道了。。。。
(ー_ー)!!
另一个朋友,前几天的事(不是 @冰狼,大家一定要信我,真的不是他 )
变量注释:
DB-USERNAME:数据库用户名;
DB-PASSWORD:数据库密码;
Username:用户输入的用户名;
Password:用户输入的密码;
DB-Password:从数据库获取到的用户密码;
本来运行挺正常的,直到他有一天他准备整理变量名,发现了变量名重复的问题,然后他就想这,数据库里获取到的密码不是数据库的密码,不应该叫DB-Password,然后,他就顺手改成了Password。。。没错,他改成了Password。
巧了,他是从数据库获取到盐和密码哈希值以后,才对用户输入的密码进行哈希。
然后也没去测试,想着就是把数据库的用户名和密码改为首字母大写而已,不会出BUG。。。
有意思的来了,等着有人反应所有账户随便乱打一个密码就能登录的时候,他已经把这茬忘了,然后这个bug他找了好几天,从前端找到后端,从后端找到数据库,愣是没有觉得在登陆验证的时候检查的是Password === Password哪里不太对。。。
(||๐_๐)