奇怪的是,SQL Server Management Studio中的数据

伯格96

我正在ASP.NET中创建一个简单的项目,并使用此代码继续登录,检测角色并打开确切的页面。

string cmdText = "SELECT Username,Role FROM Login WHERE Username = '" + TextBox1.Text + "' AND Password = '" + TextBox2.Text + "'";

string username = "";
string role = "";

using (SqlCommand SelectCommand = new SqlCommand(cmdText, connectionstring))
{
    SqlDataReader myReader;
    connectionstring.Open();

    myReader = SelectCommand.ExecuteReader();

    while (myReader.Read())
    {
        username = myReader["Username"].ToString();
        role = myReader["Role"].ToString();
    }

    myReader.Close();

    Response.Redirect(role + ".aspx");
}

我设置它role+".aspx"是因为在if函数中出现一些奇怪的错误。它无法正常工作。

但是重定向到页面仍然有问题..我注意到了这一点

图片1

因此,对此错误感到困惑,我决定检查SQL Server中的数据,并且有以下内容:

image2

角色后面有5个空格。.我试图删除它们。但是在保存数据之后,空格再次出现。.我注意到名称和密码也一样

image3

但是现在有9个空格..看起来SQL Server Management Studio试图填充最多10个字母...

Usernamepassword并且rolenchar(10)类型..是什么问题?

我应该改变来解决这个问题吗?或者可以通过其他方式完成

史蒂夫

nchar列中的固定长度的空间中存储其值。如果您声明一列类型,nchar(10)则所有值都用空格填充,以达到10个字符的长度。
如果可以更改架构,则将该列更改为nvarchar(10)类型,(对此不确定)可能需要重新编辑已经存在的所有值。

请参见SQL Server中的char,nchar,varchar和nvarchar有什么区别?

如果您无法更改架构,则可以在代码中修剪结果

 Response.Redirect(role.Trim() + ".aspx");

但是,查看您的代码,我看到了一个很大的问题。您正在使用模糊字符串串联来构建查询。这是一个众所周知的代码弱点,并导致Sql Injection攻击和解析错误。
您应该使用参数尽快修复该查询

string cmdText = "SELECT Role FROM Login WHERE Username = @name AND Password = @pass";
// You already know the username
string username = textBox1.Text;
string role = "";
using (SqlCommand SelectCommand = new SqlCommand(cmdText, connectionstring))
{
    connectionstring.Open();
    SelectCommand.Parameters.Add("@name", SqlDbType.NVarChar).Value = textBox1.Text;
    SelectCommand.Parameters.Add("@pass", SqlDbType.NVarChar).Value = textBox2.Text;

    using(SqlDataReader myReader = SelectCommand.ExecuteReader())
    {
        while (myReader.Read())
        {
            role = myReader["Role"].ToString();
        }
    }
    Response.Redirect(role.Trim() + ".aspx");
}

最后,请考虑将明文密码存储在数据库中是另一个要避免的安全漏洞。众所周知,良好的做法是在将密码存储在数据库中之前对密码进行哈希处理和加盐处理

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改SQL Server Management Studio中的默认数据库

来自分类Dev

在SQL Server Management Studio中找不到数据库

来自分类Dev

SQL Server Management Studio中的自动完成

来自分类Dev

SQL Server Management Studio中的默认编码

来自分类Dev

SQL Server Management Studio中的串联

来自分类Dev

在SQL Server Management Studio中执行查询

来自分类Dev

在 SQL Server Management Studio 中循环

来自分类Dev

SQL Server 2014 Express中缺少SQL Server Management Studio

来自分类Dev

SQL Server Management Studio 17 中的 Azure SQL - 无法手动编辑数据

来自分类Dev

SQL Server 2008 R2无法连接到Management Studio中的本地数据库

来自分类Dev

无法在SQL Server Management Studio中删除数据库

来自分类Dev

如何在SQL Server Management Studio中关闭与本地数据库的所有连接?

来自分类Dev

无法在SQL Server Management Studio中编辑Azure数据库的行

来自分类Dev

如何在SQL Server Management Studio中编辑多个行/数据条目

来自分类Dev

是否可以从Microsoft SQL Server Management Studio中打开SQLite数据库?

来自分类Dev

意外删除mdf文件后无法分离SQL Server Management Studio中的数据库

来自分类Dev

在SQL Server Management Studio中打开后,VS 2012数据库不再工作

来自分类Dev

如何删除SQL Server数据库,使其不出现在Management Studio中

来自分类Dev

SQL Server 2008 R2无法连接到Management Studio中的本地数据库

来自分类Dev

如何在SQL Server Management Studio中关闭与本地数据库的所有连接?

来自分类Dev

VB.NET在VS2013或SQL Server Management Studio中创建本地数据库

来自分类Dev

如何在SQL Server Management Studio中编辑多个行/数据条目

来自分类Dev

如何在SQL Server Management Studio中删除数据库的内容?

来自分类Dev

Visual Studio和SQL Server Management Studio中的TFS

来自分类Dev

SQL Server Management Studio未显示表的正确数据空间

来自分类Dev

SQL Server Management Studio忽略默认数据库

来自分类Dev

SQL Server Management Studio 数据库图标

来自分类Dev

无法访问在 SQL Server 2014 Management Studio 中通过 Plesk 创建的 SQL Server 数据库

来自分类Dev

如何将SQL Server Management Studio中创建的数据库与Visual Studio连接起来?

Related 相关文章

  1. 1

    更改SQL Server Management Studio中的默认数据库

  2. 2

    在SQL Server Management Studio中找不到数据库

  3. 3

    SQL Server Management Studio中的自动完成

  4. 4

    SQL Server Management Studio中的默认编码

  5. 5

    SQL Server Management Studio中的串联

  6. 6

    在SQL Server Management Studio中执行查询

  7. 7

    在 SQL Server Management Studio 中循环

  8. 8

    SQL Server 2014 Express中缺少SQL Server Management Studio

  9. 9

    SQL Server Management Studio 17 中的 Azure SQL - 无法手动编辑数据

  10. 10

    SQL Server 2008 R2无法连接到Management Studio中的本地数据库

  11. 11

    无法在SQL Server Management Studio中删除数据库

  12. 12

    如何在SQL Server Management Studio中关闭与本地数据库的所有连接?

  13. 13

    无法在SQL Server Management Studio中编辑Azure数据库的行

  14. 14

    如何在SQL Server Management Studio中编辑多个行/数据条目

  15. 15

    是否可以从Microsoft SQL Server Management Studio中打开SQLite数据库?

  16. 16

    意外删除mdf文件后无法分离SQL Server Management Studio中的数据库

  17. 17

    在SQL Server Management Studio中打开后,VS 2012数据库不再工作

  18. 18

    如何删除SQL Server数据库,使其不出现在Management Studio中

  19. 19

    SQL Server 2008 R2无法连接到Management Studio中的本地数据库

  20. 20

    如何在SQL Server Management Studio中关闭与本地数据库的所有连接?

  21. 21

    VB.NET在VS2013或SQL Server Management Studio中创建本地数据库

  22. 22

    如何在SQL Server Management Studio中编辑多个行/数据条目

  23. 23

    如何在SQL Server Management Studio中删除数据库的内容?

  24. 24

    Visual Studio和SQL Server Management Studio中的TFS

  25. 25

    SQL Server Management Studio未显示表的正确数据空间

  26. 26

    SQL Server Management Studio忽略默认数据库

  27. 27

    SQL Server Management Studio 数据库图标

  28. 28

    无法访问在 SQL Server 2014 Management Studio 中通过 Plesk 创建的 SQL Server 数据库

  29. 29

    如何将SQL Server Management Studio中创建的数据库与Visual Studio连接起来?

热门标签

归档