相关疑难解决方法(0)

如何从"Bobby Tables"XKCD漫画中注入SQL?

只看:

XKCD Strip (来源:https://xkcd.com/327/)

这个SQL做了什么:

Robert'); DROP TABLE STUDENTS; --
Run Code Online (Sandbox Code Playgroud)

我知道这两个'并且--是用于评论,但是这个词也没有DROP被评论,因为它是同一行的一部分?

security validation sql-injection

1070
推荐指数
13
解决办法
19万
查看次数

参数真的足以阻止Sql注入吗?

我一直在向我的同事们讲道,在这里谈论在SQL查询中使用参数的好处,特别是在.NET应用程序中.我甚至承诺给予他们免受SQL注入攻击的抵抗力.

但我开始怀疑这是否真的如此.是否有任何已知的SQL注入攻击可以成功对抗参数化查询?例如,您可以发送一个导致服务器缓冲区溢出的字符串吗?

当然还有其他考虑因素可以确保Web应用程序是安全的(比如清理用户输入和所有内容),但现在我正在考虑SQL注入.我对MsSQL 2005和2008的攻击特别感兴趣,因为它们是我的主要数据库,但所有数据库都很有趣.

编辑:澄清参数和参数化查询的含义.通过使用参数我的意思是使用"变量"而不是在字符串中构建SQL查询.
所以不要这样做:

SELECT * FROM Table WHERE Name = 'a name'
Run Code Online (Sandbox Code Playgroud)

我们这样做:

SELECT * FROM Table WHERE Name = @Name
Run Code Online (Sandbox Code Playgroud)

然后在查询/命令对象上设置@Name参数的值.

sql database asp.net sql-injection

82
推荐指数
5
解决办法
3万
查看次数

SqlCommand参数与String.Format

我一直在互联网上搜索,但我似乎无法找到解释我的问题的任何东西(可能是我没有使用正确的搜索字符串),所以我发帖在这里希望有人可以帮助我有了这个.(我的程序是使用Visual Studio 2010编写的C#)

我注意到在C#中,有多种构造SQL命令的方法.

SqlConnection connection = GetAndOpenConnection(); //function containing connection string and open connection
SqlCommand command = connection.CreateCommand();
Run Code Online (Sandbox Code Playgroud)

到目前为止,我没有任何问题.我遇到的问题是CommandText.我在我的代码中使用了几个不同的命令(SELECT/ INSERT/ UPDATE/ DELETE),但SELECT举个例子.

//Example 1:
command.CommandText = String.Format("SELECT * FROM myTable WHERE name = '{0}'", "bob");

//Example 2:
command.CommandText = "SELECT * FROM myTable WHERE name = @myName";
command.Parameters.Add(new SqlParameter("myName", "bob"));
Run Code Online (Sandbox Code Playgroud)

上面两个例子之间有什么区别?(表现明智/结构明智/等)

我问的原因是因为在同一个.cs文件中,当我使用示例2中的方法时,有时候代码正常工作而有时它没有,那么我最终会像示例1中那样生成所有内容,每个单独工作时间.

使用任何一种方法都有显着的收益/损失吗?完成这样的任务的更合适的方法是什么?

其他问题

好的,所以我看到方法2是更合适的方法.

但是,如果我使用方法2则会出现问题.

我有一个循环循环通过List<string> names.在循环内部,当我使用方法2并添加名称作为参数时,我得到一个错误,说该参数已经存在且无法添加.

我怎样才能解决这个问题?

List<string> names = new List<string> {"adam", "bob", "john"};
foreach(string …
Run Code Online (Sandbox Code Playgroud)

c# sql parameters command

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

从什么sql参数保护你?

参数用于保护您免受恶意用户输入.

但是如果参数需要一个字符串,是否可以编写将被解释为sql的输入,因此恶意用户可以使用"DROP","TRUNCATE"等内容......?

asp,asp.net,java等参数之间的保护是否存在差异?


另请参阅:参数是否足以阻止SQL注入?

sql database security parameters

3
推荐指数
2
解决办法
2120
查看次数

实体框架核心:此平台不支持类型Udt.(空间数据 - 地理)

我正在尝试实体框架核心,偶然发现了一个我从未见过的错误,无法弄清楚如何修复它.我正在使用.net Core Web API 2.0和EntityFramework Core 2.00-preview2-final

这是一个触发错误的简单示例.

(概念:从数据库中获取用户的简单端点)

错误:System.PlatformNotSupportedException:此平台不支持类型Udt.

有什么建议?

问题是我在我的数据库中使用地理,但我在模型中将它用作字符串,因为实体框架核心还不支持空间数据......

如何在不摆脱地理位置的情况下保持这种蛋糕的美味,这是一个重要特征吗?

编辑:请参阅我当前解决方案的答案

c# entity-framework asp.net-web-api entity-framework-core

3
推荐指数
1
解决办法
3934
查看次数