![]() |
1
8
你发现 SQL Injection Attacks . 出于您指定的原因,将用户提供的数据追加到SQL查询是不好的策略。系统中的任何用户都可以尝试通过插入一些SQL来窃取或破坏数据。 处理它的方法在链接中描述,但基本上您指定了参数,并让提供的类正确地处理转义数据,这样,如果有人通过了“Drop Table”,它将简单地作为数据输入。 以下是一个很好的例子 CodeBetter.com
或者,可以随意使用Linq to SQL。它将为您处理这个问题,并且从开发人员的角度来看更容易处理。您可以将数据库拖放到代码中,它将完全映射每个表。然后,您可以在代码中编写Linq的SQL语句版本,在代码中您将获得代码完成和编译时错误检查。 This SO question will get you started . 下面是一些简单的LINQ代码,可以让您从数据库中读取客户,将其姓名写入屏幕,然后更新其个性化问候语(所有这些都可以避免SQL注入):
|
![]() |
2
4
处理需要与用户输入混合的数据库查询的最佳方法是 parameterized them . 现在,LinqtoSQL将为您实现这一点,但普通的老ADO.NET也允许您实现这一点(正如我链接的文章所描述的那样)。 无论您是在调用存储过程还是在应用程序中创建动态查询以发送到RDBMS,这都是有效的。 |
![]() |
3
1
似乎您正在执行一些动态SQL,即使用C中的各种字符串操作动态创建SQL语句,然后运行这些语句。 这种做法非常通用,但会带来 SQL injection . 这是一个偶然的情况,是自己造成的,但是假设构建SQL语句所使用的一些元素是通过HTML字段提供的,恶意用户可以设计一个特定的字符串来有效地“删除表”或更糟的情况… 有很多方法可以解决这种情况,最常见的方法是使用参数化的SQL模板。使用这种技术,SQL语句的变量部分以单独的参数(在SQL级别称为参数)提供给SQL。ADO命令对象是用于调用参数化查询的工具。 linq-to-sql也可以用来处理这类事情。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 5 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 5 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 5 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 6 月前 |