读取注释和SQL调优中的sql注入漏洞

核心提示:最近阅读了程序员的SQL黄金书。我认为SQL注入漏洞和SQL调优相当不错。SQL注入漏洞和SQL调整作了简要的讨论below.1.sql注入漏洞是因为1 = 1这个表达式总是回到真实,和技术。

最近,我读了程序员的SQL黄金书。我认为SQL注入漏洞和SQL调优相当不错。下面简要讨论SQL注入漏洞和SQL调优。

1。SQL注入漏洞

1= '1'真正的和真实的总是返回的表达,任何逻辑或计算结果是正确的,那么无论什么是正确的密码;密码= '1'or 1= '1'计算值永远是真实的,所以,恶意攻击者可以使用任何帐户登录系统,漏洞被称为SQL注入漏洞(SQL注入);。
处理SQL注入漏洞有两种方法:过滤敏感字符和使用参数化SQL。
1)。过滤敏感字符
过滤敏感字符的思维非常简单,因为恶意攻击者通常需要输入文本框中的输入字符串包含和选择、或片段、删除等,所以在sql的汇编前,检查用户提交的文本是否包含这些敏感字符串,如果有终止操作的话。
2)。使用参数化SQL
一个集确定运行时的用户名和密码,然后运行设置其值,java,在C #直接执行SQL的参数和相应的参数值传递到数据库,在数据库管理系统将参数值为对付他们而不是拼接到参数化SQL常见价值,从而从根本上避免SQL注入漏洞攻击。


2。SQL调优

当使用数据库管理系统,系统的性能往往是非常高的:它不会占用太多的系统内存和CPU资源,尽快完成对数据库的操作,以尽可能高的系统吞吐量。如果系统不能满足所有要求的性能指标,系统必须进行调整,这项工作称为调谐。
SQL调优的基本原理
Ldquo;28原则是一个普遍的真理,特别是在计算机世界中,这表明20%码的消费占80%的总资源消耗。SQL语句也是一种代码,所以它也符合原理。当SQL调整完成后,我们应该关注20%大消费的SQL语句系统的资源,而不需要调整所有SQL语句的最佳状态。
索引是数据库调优中最基本的优化方法。
常用的SQL调优方法:
1)创建必要的索引
2)使用预编译的查询
通常,sql语句是根据用户输入动态执行的。在这种情况下,应尽可能使用参数化SQL,这样就避免了SQL注入漏洞。最重要的数据库将这些参数化的SQL。
3)调整WHERE子句中的连接顺序。
DBMS通常使用自底向上的序列来分析WHERE子句。根据这一原则,表连接最好在其他条件之前编写,这样可以过滤出最多的记录数。
例如,下面的SQL语句性能较差:SELECT * FROM t_person哪里fsalary > 50000和fposition = ‘MANAGERrsquo;25<('(*))。
我们将子查询条件放在最前面。下面的SQL语句执行得更好:SELECT * FROM t_person其中2550000和fposition = ‘MANAGERrsquo;
4)避免在SELECT语句中使用*
选择是相对简单的,但除非你需要检索所有列,否则将不需要检索的列,这将增加网络负载和服务器资源消耗;即使你需要检索所有列,也不要使用SELECT *,因为这是一个数据库管理系统的方法低效率的分析过程中,将转换为所有的名字,这意味着将有更多的时间。
5)尝试将多个SQL语句压缩成SQL
当执行sql建立网络连接、访问检查、查询优化、SQL语句发送执行结果时,这个过程非常耗时,所以我们应该尽量避免过多的执行SQL语句,可以压缩成sql语句,执行多则不执行。
6)用WHERE子句替换带子句。
避免使用HAVING子句,因为只有过滤器设置到检索所有记录的结果。如果你能通过WHERE子句限制记录的数量,你可以降低成本。在有条件的一般用于过滤的聚集功能,除此之外,条件应写在WHERE子句。
7)使用表的别名
在SQL语句中连接多个表时,使用表的别名并在每个列名上加上别名,这样可以减少分析的时间,减少名称歧义造成的语法错误。
8)替换存在
在查询中,为了满足一个条件,它常常需要加入另一个表。在这种情况下,使用存在代替在中通常会提高查询的效率,因为子句将在子查询中执行排序和合并。
9)表连接替换存在
一般来说,表连接比现有的更高效,所以如果可能的话,尽可能地用表连接替换存在。
10)避免在索引列上使用计算
在WHERE子句中,如果索引列是计算或函数的一部分,DBMS优化器将使用完整的表扫描而不使用索引。
11)将联合替换为全部
当SQL语句需要联合两个查询结果集,即使在搜索结果中没有重复的记录,如果结合使用,两结果集也将尝试合并,然后在输出排序结果。因此,如果在检索结果不重复记录,工会都应更换会使效率提高。
12)避免由隐式类型转换引起的全表扫描。
13)防止检索范围太广
如果DBMS优化器认为搜索范围太广,那么它将放弃索引查找和使用全表扫描。这里有几种情况可能导致广泛的检索范围:使用是无效的或不,它可能会导致太多的记录匹配的优化器假设。当使用像运营商,%使用索引,while'a %和% c'will使用全表扫描,so'a %和% c'can不能有效地评估数字匹配。
U3000 U3000
如果你有任何问题,欢迎来到下面的评论,让我们一起讨论,谢谢。

如果你感觉良好,你不妨指出下一条正确的建议,在你的鼓励下,我将继续努力工作。