|
|
1
82
|
|
2
71
|
|
|
3
27
|
|
|
4
19
转义单引号是不够的。
此外,JulianR在下面提出了一个很好的观点: 试着自己做安保工作。安全编程很容易以微妙的方式出错 即使经过彻底的测试,也能正常工作。然后时间流逝,一年后你发现你的系统在六个月前被破解了,直到那时你才知道。
|
|
|
5
10
保证 从不
此外,有两种方法可以计算出实际运行的内容——滚动自己的LogCommand函数,这是一个简单的函数 没有安全问题
|
|
|
6
7
|
|
|
7
5
我使用了这两种方法来避免SQL注入攻击,并且肯定更喜欢参数化查询。当我使用级联查询时,我使用了一个库函数来转义变量(如mysql_real_escape_string),并且不确定我是否已经涵盖了专有实现中的所有内容(看起来你也一样)。 |
|
|
8
4
|
|
|
9
3
最终会变成:
|
|
|
10
2
在必须将SQL放入代码的地方,我使用参数,这是唯一有意义的。提醒持不同意见的人,有比他们更聪明的黑客,并且有更好的动机破解试图战胜他们的代码。使用参数,这根本不可能,也不难。 |
|
|
11
2
数据库将始终编译您的查询并缓存它,然后重用缓存的查询(这对于后续请求显然更快)。
|
|
|
12
1
由于已经给出的原因,参数是一个非常好的主意。但我们讨厌使用它们,因为创建参数并将其名称分配给变量以供以后在查询中使用是一种三重间接的破坏。
|
|
|
13
1
|
|
|
14
1
http://www.sommarskog.se/dynamic_sql.html http://unixwiz.net/techtips/sql-injection.html 就我个人而言,我宁愿永远不允许任何动态代码接触我的数据库,要求所有联系都是通过sps(而不是使用动态SQl的)。这意味着除了我授予用户的权限外,什么都不能做,内部用户(除了极少数出于管理目的具有生产访问权限的用户)不能直接访问我的表,造成破坏、窃取数据或实施欺诈。如果你运行一个金融应用程序,这是最安全的方法。 |
|
15
1
最终,替代安全机制依赖于
|
|
|
16
1
因此,让数据库自己完成识别输入的工作,更不用说当你需要实际插入奇怪的字符时,它也节省了大量的麻烦,否则这些字符会被转义或更改。它甚至可以节省一些宝贵的运行时间,因为不必计算输入。 |
|
|
17
1
我没有看到任何其他answsers谈到“为什么自己做不好”的这一面,但考虑一下 SQL Truncation attack .
|
|
|
18
1
|
|
|
19
0
以下是使用参数化查询的几个原因: |
|
|
20
0
|
|
|
21
0
另一个重要的考虑因素是跟踪逃逸和未逃逸的数据。有大量的应用程序,无论是Web还是其他应用程序,似乎都无法正确跟踪数据何时是原始Unicode;-编码、格式化的HTML等。很明显,很难跟踪哪些字符串是
|
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |