sql注入把系统搞崩溃,该怎么解决(四)

开课吧开课吧锤锤2021-05-08 10:12

点赞
有用
分享分享

    Java编程语言是一种简单、面向对象、分布式、解释型、健壮安全、与系统无关、可移植、高性能、多线程和动态的语言。如今Java已经广泛应用于各个领域的编程开发。

Java

    7.sql注入到底有哪些危害?

    1.核心数据泄露

    大部分攻击者的目的是为了赚钱,说白了就是获取到有价值的信息拿出去卖钱,比如:用户账号、密码、手机号、身份证信息、银行卡号、地址等敏感信息。

    他们可以注入类似这样的语句:

-1; select * from user;--

    就能轻松把用户表中所有信息都获取到。

    所以,建议大家对这些敏感信息加密存储,可以使用AES对称加密。

    2.删库跑路

    也不乏有些攻击者不按常理出牌,sql注入后直接把系统的表或者数据库都删了。

    他们可以注入类似这样的语句:

-1; delete from user;--

    以上语句会删掉user表中所有数据。

-1; drop database test;--

    以上语句会把整个test数据库所有内容都删掉。

    正常情况下,我们需要控制线上账号的权限,只允许DML(datamanipulationlanguage)数据操纵语言语句,包括:select、update、insert、delete等。

    不允许DDL(datadefinitionlanguage)数据库定义语言语句,包含:create、alter、drop等。

    也不允许DCL(DataControlLanguage)数据库控制语言语句,包含:grant,deny,revoke等。

    DDL和DCL语句只有dba的管理员账号才能操作。

    顺便提一句:如果被删表或删库了,其实还有补救措施,就是从备份文件中恢复,可能只会丢失少量实时的数据,所以一定有备份机制。

    3.把系统搞挂

    有些攻击者甚至可以直接把我们的服务搞挂了,在老东家的时候就是这种情况。

    他们可以注入类似这样的语句:

-1;锁表语句;--

    把表长时间锁住后,可能会导致数据库连接耗尽。

    这时,我们需要对数据库线程做监控,如果某条sql执行时间太长,要邮件预警。此外,合理设置数据库连接的超时时间,也能稍微缓解一下这类问题。

    从上面三个方面,能看出sql注入问题的危害真的挺大的,我们一定要避免该类问题的发生,不要存着侥幸的心理。如果遇到一些不按常理出票的攻击者,一旦被攻击了,你可能会损失惨重。

    以上就是开课吧开课吧老师苏三说技术的“sql注入把系统搞崩溃,该怎么解决(四)”一文,更多Java教程相关内容尽在开课吧广场Java教程频道!

有用
分享