当前位置: 首页 > 面试题库 >

使用SQL参数绑定是否意味着可以直接从输入中输入文本?

戚阳曜
2023-03-14
问题内容

如标题所示,如果我使用的是SQL参数,即

SQLCommand cmd = new SQLCommand("select * from users where username = @user and password = @pass limit 1", Cxn);

cmd.Parameters.Add("@user", SqlDbType.VarChar):
cmd.Parameters.Add("@pass", SqlDbType.VarChar):

我可以直接输入参数值作为输入的直接输入吗?

cmd.Parameters["@user"].value = txtBxUserName.text;
cmd.Parameters["@pass"].value = txtBxPassword.text;

每当您寻找与转义字符串等有关的内容时,似乎都建议这样做,最终的答案是让参数绑定来完成。但是,这样可以防止注入攻击等吗?还是您仍然需要执行一些服务器端验证?

来自高度注重PHP的背景,它与我身体的每根纤维都背道而驰,直接在查询中输入文本:p


问题答案:

就SQL注入而言,您给出的示例是安全的。参数化查询的唯一潜在SQL注入问题是它们是否解决了本身使用动态SQL的proc。

当然,无论是否要进行参数化,您仍然必须考虑XSS漏洞。



 类似资料:
  • 或者我必须在方法中使用任务。运行以确保每个函数都存在于自己的线程上?我试图看看我在我正在处理的代码中看到的这种做法是否有任何智慧。 我有一种感觉,这是意外的设计,因为它使调试时不可能遍历每一行。因此,我想知道我是否正确地向其他人解释,异步自动意味着创建一个新的线程,以便只有在await或.GetAwaiter()时才调用该函数。使用GetResult()。谢谢

  • 问题内容: 使用bcp时如何使用长查询指定输入sql文件?我尝试使用该选项,但它一直抱怨没有任何其他信息的命令行错误。这可能吗? 问题答案: 就我而言,BCP实用程序仅支持直接写入命令行的Transact-SQL查询。前任: bcp“从AdventureWorks.Sales.Currency中选择名称” queryout Currency.Name.dat -T -c 根据其参考,“-i”选项:

  • 问题内容: 当输入零作为输入时,我需要停止询问整数输入,并立即开始求和。当我键入零时,我的程序不会停止。我需要它停止并开始汇总它收集的所有输入。 这是我所拥有的: ///////////////有效的最终代码。谢谢!公共类Inttosum { 问题答案: 您正在使用一种称为循环条件的东西,但是在循环中更新了变量。您可以使用循环。更改 像 使用 我也建议先打电话再打电话。而且,由于您不使用(只是),

  • 问题内容: 我正在从另一个来源接收ZipInputStream,并且需要将第一项的InputStream提供给另一个来源。 我希望能够在不将临时文件保存在设备上的情况下执行此操作,但是,我知道获取单个条目的InputStream的唯一方法是通过ZipFile.getInputStream(entry),并且因为我有一个ZipInputStream而不是ZipFile , 这是不可能的。 所以我最好

  • 本文向大家介绍浅谈Java中是否直接可以使用enum进行传输,包括了浅谈Java中是否直接可以使用enum进行传输的使用技巧和注意事项,需要的朋友参考一下 背景 我们在进行传输的时候 会有一些状态值,如Status为1代表删除,为0代表失败或者怎么样的。只传输一个)0或者1过去给第三方(此处不包括给前端),如果没有契约第三方会不认识你这个是什么意思,那我们在平时写业务逻辑的时候使用枚举很轻易就知道

  • 本文向大家介绍aurelia 绑定到文件输入,包括了aurelia 绑定到文件输入的使用技巧和注意事项,需要的朋友参考一下 示例