mysql - 不检查数据类型的安全问题

标签 mysql security

它不检查密码类型。密码可以定义为 4 位无符号整数,如果用户尝试将其密码更改为 4 位无符号整数以外的其他密码,则可能会导致错误,对吗?

如果是这样,什么样的错误? 只是一个简单的错误消息还是这可能是一个主要的安全问题? 有人可以对此进行缓冲区溢出攻击吗?

最佳答案

这里可能存在重大安全问题!不仅仅是一条错误消息。阅读有关 SQL 注入(inject)的更多信息。简单的规则是,您应该始终清理任何字符串用户输入,以确保类型正确,但更重要的是,它不会绕过您的意图并侵入您的数据库。

简单的 Google 搜索会返回例如 this site .

对于 .NET,最好使用 SqlParameter 而不是连接字符串来形成 SQL 查询。 SqlParameter 保护您免受 SQL 注入(inject)...

using (SqlCommand cmd = new SqlCommand("UPDATE tblUser SET Password = @password WHERE CustomerID=@custID", conn))
{
   cmd.Parameters.Add(new SqlParameter("password ", newPassword));
   cmd.Parameters.Add(new SqlParameter("custID", custID));
...

关于mysql - 不检查数据类型的安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13002027/

相关文章:

php - Laravel 如何在 Controller 中使用 create 函数添加记录?

asp.net - 当 Web 服务被自己的服务器调用时,有人窃听该服务的风险有多大?

sql - 如何将 SQL 中的主键更改为 auto_increment?

php - mysql多查询功能不正确

python - 从另一个区域连接到 DocumentDB

c# - 在子目录中安全地执行用户输入文件路径

php - 我可以在 Swift 的 header 中使用 token 来授权数据库连接吗?

php - 测试 Web 应用程序中的安全漏洞 : Best practices?

php - 子项目站点的通用用户配置文件——安全地从主服务器传输用户数据

mysql - 数据库设计 : conjunction