相关疑难解决方法(0)

为什么我们总是喜欢在SQL语句中使用参数?

我很擅长使用数据库.现在我可以写SELECT,UPDATE,DELETE,和INSERT命令.但我看过很多我们喜欢写的论坛:

SELECT empSalary from employee where salary = @salary
Run Code Online (Sandbox Code Playgroud)

...代替:

SELECT empSalary from employee where salary = txtSalary.Text
Run Code Online (Sandbox Code Playgroud)

为什么我们总是喜欢使用参数以及如何使用它们?

我想知道第一种方法的用途和好处.我甚至听说过SQL注入,但我并不完全理解它.我甚至不知道SQL注入是否与我的问题有关.

sql sql-server sql-injection

104
推荐指数
4
解决办法
12万
查看次数

如何将用户提供的输入添加到SQL语句中?

我试图使用用户提供的数据创建一个SQL语句.我在C#中使用与此类似的代码:

var sql = "INSERT INTO myTable (myField1, myField2) " +
          "VALUES ('" + someVariable + "', '" + someTextBox.Text + "');";

var cmd = new SqlCommand(sql, myDbConnection);
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

这在VB.NET中:

Dim sql = "INSERT INTO myTable (myField1, myField2) " &
          "VALUES ('" & someVariable & "', '" & someTextBox.Text & "');"

Dim cmd As New SqlCommand(sql, myDbConnection)
cmd.ExecuteNonQuery()
Run Code Online (Sandbox Code Playgroud)

然而,

  • 当用户输入包含单引号(例如O'Brien)时,这会失败,
  • 插入DateTime值时,我似乎无法正确获取格式
  • 人们一直告诉我,由于"SQL注入",我不应该这样做.

我怎么做"正确的方式"?

c# sql vb.net ado.net sql-injection

44
推荐指数
1
解决办法
5439
查看次数

什么是防止SQL注入的好方法?

我必须为我的OJT公司编写应用程序管理系统.前端将在C#中完成,后端在SQL中完成.

现在我从未做过这个范围的项目; 在学校我们只有关于SQL的基础课.不知怎的,我们的老师完全没有讨论SQL注入,我现在才通过在网上阅读它来接触它.

所以无论如何我的问题是:你如何防止C#中的SQL注入?我隐约认为可以通过正确屏蔽应用程序的文本字段来完成它,以便它只接受指定格式的输入.例如:电子邮件文本框的格式应为"example@examplecompany.tld".这种方法是否足够?或者.NET是否有预定义的方法来处理这样的东西?我可以将过滤器应用于文本框,因此它只接受电子邮件地址格式或名称文本框,因此它不接受特殊字符吗?

c# sql security sql-injection

38
推荐指数
4
解决办法
8万
查看次数

如何使用C#将数据插入SQL表以及实现上传功能?

下面是我正在尝试将数据插入到我的'ArticlesTBL'表中的代码.我还想将图像文件上传到mt计算机.以前我在Visual Studio中使用我的.aspx文件中的数据控件来插入数据,所以在C#中尝试这样做对我来说是新的.真的很感激任何帮助.谢谢.

我收到错误读取:'UploadedUserFiles'附近的语法不正确.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;

public partial class _CopyOfSubmitArticle : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void uploadbutton_Click(object sender, EventArgs e)
{
    string UpPath = Server.MapPath("~/UploadedUserFiles");

        int imgSize = FileUpload1.PostedFile.ContentLength;
        string imgName = FileUpload1.FileName;
        string imgPath = "UploadedUserFiles/" + imgName;

        if (FileUpload1.PostedFile.ContentLength > 1000000)
        {
            Page.ClientScript.RegisterClientScriptBlock(typeof(Page), "Alert", "alert('File is too big')", true);
        }

        else
        {
            FileUpload1.SaveAs(Server.MapPath(imgPath));
            myinfo.Text …
Run Code Online (Sandbox Code Playgroud)

c# sql database image-uploading visual-studio

11
推荐指数
2
解决办法
12万
查看次数

什么时候担心SQL注入保护

小背景:我是这家公司唯一的程序员.我正在使用预先存在的框架.

也就是说,该公司有一个DLL(Database.dll),其中包含"我需要的所有数据库交互".如,它有Query(),Update(),Insert(),等.现在,我正在写的项目设置为Database.dll参考.我的项目接受零用户输入.与用户输入最接近的是用户可以从中选择日期的下拉框.没有太多的经验,我很好奇我是否还需要担心SQL注入?如果是这样,那么查询会写得像

var query = string.Format("SELECT timestamp FROM table1 WHERE date = \"{0}\" 
                           AND measured_dist = bit_loc AND rop > 0" , Date))
Run Code Online (Sandbox Code Playgroud)

足够作为参数化查询?请记住,所有查询执行都是由Query()我已经告知必须使用的预先存在的,并且无法编辑.

编辑

该程序是一个WinForm应用程序.

c# sql

6
推荐指数
1
解决办法
465
查看次数

如何插入DBF文件(foxpro)

我在asp.net中有以下代码:

using (OleDbCommand command = dbConnW.CreateCommand())
{
    string CreateTableK = null;
    CreateTableK += "Create Table DSKKAR00 (DSK_ID c(10),DSK_KIND N(1),MON_PYM C(3))";
    OleDbCommand cmdCreateTable = new OleDbCommand(CreateTableK, dbConnW);
    cmdCreateTable.ExecuteNonQuery();
    System.Text.StringBuilder sb = new  System.Text.StringBuilder();
    sb.Append(WorkRoomNo + ","); 
    sb.Append("1,");
    sb.Append(",");
    OleDbCommand cmd3 = new OleDbCommand("Insert into DSKKAR00 (DSK_ID,DSK_KIND,MON_PYM) Values (" + sb.ToString() + ")", dbConnW);
    cmd3.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

但是我有以下错误:

语法错误

c# asp.net foxpro dbf

5
推荐指数
1
解决办法
9292
查看次数

Sql Server LIKE 查询中需要转义哪些字符

SQL Server 查询中的 LIKE 运算符对于匹配自定义模式非常有用。然而,有时需要从模式中转义某些字符或子字符串,例如与号“%”、下划线“_”、方括号“[”和“]”等。

事实上,我正在使用参数化查询,但它不能解决 LIKE 情况,因为例如搜索_意味着“任何字符”。

在转义此类模式时必须考虑的字符集是什么?能否提供 C# 函数来执行安全转义?

c# sql-server prepared-statement

5
推荐指数
1
解决办法
2万
查看次数

通过string.format生成的SQL查询字符串中的转义字符

我在c#中有声明:

String sql = String.Format("UPDATE Table SET FIRST_NAME='{0}',LAST_NAME='{1}',BIRTH_DATE='{2}' where CUSTOMER_NUMBER ='{3}'",FirstName, LastName,DateOfBirth,Number);
Run Code Online (Sandbox Code Playgroud)

如果名字,姓氏等有撇号像O'Hare,O'Callahagan,则上述语句不会执行,因为更新语句的语法错误.

如何在string.format中转义撇号?

c# sql string formatting

4
推荐指数
1
解决办法
1万
查看次数

MSSQL:单引号导致查询错误


我有一个项目,其中包含许多用*.DLLs文件编译的SQL查询.
昨天,我收到了一个新的错误:用单引号自动生成的用户名会导致错误.
原因是像这样的查询:

    string.Format("SELECT TimeZone from yaf_User WHERE [Name]='{0}'", UserName);
Run Code Online (Sandbox Code Playgroud)


有人可以建议任何类型的技巧或黑客来解决它?

更新:我不知道为什么开发人员使用这种可怕的方式来生成SQL查询,但是现在我应该修复它.客户端不明白我为什么要重写大量修复代码.

.net sql sql-server

2
推荐指数
1
解决办法
763
查看次数

如何在"IN"条件下利用SQL注入?

我试图利用以下SQL(在SQL Server 2014中):

declare @maliciousSQL nvarchar(max);
set @maliciousSQL = '???'
exec ('SELECT SUM(quantity) from mytable where id in ' + @maliciousSQL );
Run Code Online (Sandbox Code Playgroud)

如何制作参数@maliciousSQL来运行任意sql?假设任务是执行命令'truncate table othertable' - 它可行吗?

感谢任何人的帮助

sql sql-server

2
推荐指数
1
解决办法
179
查看次数