解决MySQL数据库不区分大小写的问题

在网站开发中遇到用户注册名不区分大小写的漏洞,通过两种方法解决了该问题。方法一是通过ALTER TABLE命令修改数据库字段属性,使其区分大小写;方法二是如果不想修改数据库,可以在用户登录时对比数据库查询出的用户实体类的用户名和用户输入的用户名,通过equals方法在区分大小写的情况下判断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景:在做网站开发时,若用户使用"AAAA"注册用户名,存入数据库后,当用户登录时,输入“aaaa”或"AAaa"等用户名,密码匹配情况下,都能正确登录成功,这无疑是一个很大的漏洞,解决问题的方法就是数据库要区分大小写。网上有多种方法,下面给的两种方法亲测有效。


方法一:

在数据库用户表用户名这一字段若是String类型(一般也不会是其他类型),则修改字段属性,让其默认区分大小写,例如:

alter table 表名 modify column 字段名  varchar(100) binary character set utf-8

如果使用hibernate作为实体类连接数据库,则HQL语言不需要修改。


方法二:

   如果不想修改数据库操作,可以在用户登录时采用用户名和密码从数据库查询出来这个用户实体类,然后将用户输入的用户名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值