Tag: sql injection

哪个SQL查询在SQL注入方面更安全

我有两个SQL查询,其中每次调用查询时我都试图分别用+1和-1更新sup和opp值。 第一个查询: query=update disc set sup=@sup, opp=@opp where did=@did int sup=getnoofsup(did); int opp = getnoofopp(did); com.Parameters.AddWithValue(“@sup”, sups + 1); com.Parameters.AddWithValue(“@opp”, opps – 1); com.Parameters.AddWithValue(“@did”, did); com.ExecuteNonQuery(); 第二个查询 string query=”update disc set sup=sup+1, opp=opp-1 where did=@did” ; com.Parameters.AddWithValue(“@did”, did); com.ExecuteNonQuery(); 第二次注射查询是否有任何威胁,因为我用sup+1交换@sup ?

如何在SQLite查询中使用带有参数的Like运算符?

我可以通过在LINQPad中输入这个来获得我期望的结果: SELECT * FROM WorkTable WHERE WTName LIKE “DSD__20090410014953000%” (它显示了WTName值为DSD__20090410014953000.xml的记录“) 但尝试以编程方式执行此操作certificate是尝试。 我试过了: const string qry = “SELECT SiteNum FROM WorkTable WHERE WTName LIKE @wtName%”; using (SQLiteConnection con = new SQLiteConnection(HHSUtils.GetDBConnection())) { con.Open(); SQLiteCommand cmd = new SQLiteCommand(qry, con); cmd.Parameters.Add(new SQLiteParameter(“wtName”, tableName)); siteNum = Convert.ToInt32(cmd.ExecuteScalar()); } …但它会导致应用程序崩溃,我的日志文件告诉我原因: Message: From application-wide exception handler: System.Data.SQLite.SQLiteException: SQL logic error […]

SQL脚本数据中的关键字在以编程方式执行时导致问题 – C#

我是sql的新手,我的sql脚本中的关键字问题导致了严重问题。 我正在尝试在C#中执行premade .sql脚本文件列表。 我正在将文件读取为字符串并使用command.ExecuteNonQuery()执行它。 这适用于大多数脚本,但我遇到了一个无意中包含关键字的脚本: INSERT INTO [thetable] SELECT ‘123123’, ‘abcabc’, ‘I WANT TO GO TO BED’ UNION ALL SELECT ‘123124’, ‘abcdef’, ‘SOOO TIRED’ 基本上,当它命中GO时命令失败。 我负责创建这些插入文件,所以如果我需要以某种方式重新格式化它们,那么这是可能的; 但是,它们中的数据是不可协商的。 此外,由于我从一个有很多行的文件加载它们,所以参数化以避免这些东西似乎也不可行。 在这一点上,将非常感谢任何帮助。 非常感谢! 编辑添加信息: 为了澄清,实际字符串更像是’ASVFDS4 + 23eF3da34sddsdf3d3t4g … 100charslater … sd5OAyGOsiISIssdsd / sNUIGsdisd354f’。 当我尝试执行命令时,我捕获了exception,其中说: “Unclosed quotation mark after character string ‘ASVFDS4+23eF3da34sddsdf3d3t4g…100charslater…sd5OAy’ 注意,GOOAIS紧跟着5OAy,这让我相信GO实际上被读作命令,导致它在该命令之前期望结束字符串。 运行.NET 3.5 编辑2我也应该澄清,我目前正在拆分实际的GO语句并单独执行命令。 即 USE MyDatabase […]

SQL注入是否适用于winforms?

我在c#中制作一个Windows软件。 我已经阅读了关于sql-injection但是我没有发现它正在处理我的应用程序。 SQL注入是否适用于winforms? 如果是,如何防止它们。 编辑:我使用文本框来读取用户名和密码。 通过使用textboxex我发现文本框中的文本在双引号( “” )之间。 所以我没有发现它有效。 当我在文本框中使用引号” OR ‘时,文本被读作\” OR \’ 例: ………………. USER NAME: | a” OR “1”==”1 | “““““““““` // it is read as textBox1.Text = “a\” OR \”1\”==\”1″;

调用存储过程时处理SQL注入的最佳实践

我inheritance了我正在修复安全漏洞的代码。 调用存储过程时,处理SQL注入的最佳实践是什么? 代码类似于: StringBuilder sql = new StringBuilder(“”); sql.Append(string.Format(“Sp_MyStoredProc ‘{0}’, {1}, {2}”, sessionid, myVar, “0”)); using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings[“Main”].ToString())) { cn.Open(); using (SqlCommand command = new SqlCommand(sql.ToString(), cn)) { command.CommandType = CommandType.Text; command.CommandTimeout = 10000; returnCode = (string)command.ExecuteScalar(); } } 我只是用常规SQL查询做同样的事情并使用AddParameter正确添加参数?

Entity Framework的SQL运算符函数是否可以安全地防止SQL注入?

这些函数可以访问SQL中的专业函数(SqlClient)。 例如’like’或’between’。 而且它们还为它们提供了更好的通用抽象层。 不要与存储过程“function”混淆,这是另一个问题的主题。 我似乎无法找到完整答案的问题是。 它们是否可以安全使用,或者我是否将系统打开到SQL注入攻击 ? 在编写常规SqlCommands时,我总是使用绑定变量。 但是转向entity framework。 对SQL语句的控制较少。 我不介意,但是当我连接来自浏览器的字符串并将其传递给函数时,我不禁担心。 这是一个例子: var QueryResult = EFContext.Table.Where(x => SqlFunctions.PatIndex(“%” + Potentially_unsafe_search_keyword + “%”, x.Column) > 0); 我做了一些测试并跟踪发送到服务器的实际SQL。 单引号会自动转义。 显然,那里有一些保护。 有一些消毒正在进行中。 Insert语句确实使用绑定变量。 我应该满足于单一报价的替换吗? 幕后还有其他事情发生吗?

在ORDER BY子句中阻止SQL注入

在我们的数据库访问层中,我们有一些动态查询创建。 例如,我们有以下方法来构建ORDER BY子句的一部分: protected string BuildSortString(string sortColumn, string sortDirection, string defaultColumn) { if (String.IsNullOrEmpty(sortColumn)) { return defaultColumn; } return String.Format(“{0} {1}”, sortColumn, sortDirection); } 问题是, sortColumn和sortDirection都来自外部作为字符串,所以当然应该采取措施来防止可能的注入攻击。 有没有人知道如何做到这一点?

C#sqlite注入

如果我改变我的选择 String insSQL2 = “select * from Produtos where nome = ‘” + txtBuscaNome.Text + “‘” 至 String insSQL2 = “select * from Produtos where nome = ”” + txtBuscaNome.Text + “”” 它会阻止sql注入吗?

如何使用SQL参数从SQL Server获取数据集

我正在研究C#项目,我是这项技术的新手。 我想从SQL Server 2008中读取一些数据,然后编写以下代码 public User select(string username, string password) { string connection = ConfigurationManager.ConnectionStrings[“lawyersDBConnectionString”].ConnectionString.ToString(); string sql = string.Format(“select * from users where userName = ‘{0}’ and password = ‘{1}'”, username, password); SqlConnection con = new SqlConnection(); con.ConnectionString = connection; DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(sql, con); User user = new […]

我可以从SELECT语句中获得SQL注入攻击吗?

实际上有2个问题 我知道我必须尽可能多地使用存储过程,但我想知道以下内容。 答:我可以从SELECT语句中获取SQL注入攻击,例如(Select * from MyTable)吗? B:另外,当我在ASP.NET中使用SQLDataSource时,我能获得SQL注入攻击吗?