SQL注入:
原理:
指web应用程序对用户输入的数据合法性没有判断,导致攻击者可以构造不同的sql语句来对数据库数据库的操作。(web应用程序对用户输入的数据没有进行过滤,或者过滤不严,就把sql语句带进数据库中进行查询)。
Sql注入漏洞的产生需要满足两个条件:
①参数用户可控:前端传给后端的参数内容是用户可以控制的。
②参数代入数据库查询:传入的参数拼接到sql语句,且带入数据库查询。
危害
①数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
②网页篡改:通过操作数据库对特定网页进行篡改。
③网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
④数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
⑤服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
⑥破坏硬盘数据,瘫痪全系统。
修复建议
①过滤危险字符:例如,采用正则表达式匹配union、sleep、load_file等关键字,如果匹配到,则退出程序。
②使用预编译语句:使用PDO预编译语句,需要注意,不要将变量直接拼接到PDO语句中,而是使用占位符进行数据库的增加、删除、修改、查询。
③特殊字符转义、使用严格的数据类型。
文件上传:
原理
就是未对用户上传的文件进行检查和过滤,导致某些别有用心的用户上传了一些恶意代码或文件(asp、php、jsp等),从而控制了网站。(当文件上传时,如果服务端的脚本语言没有对上传的文件进行检查和过滤,那假如,渗透者直接上传恶意代码文件,那么就有可能直接控制整个网站,或者说以此为跳板,直接拿下服务器,这就是文件上传漏洞。)
危害
非法用户可以利用恶意脚本文件控制整个网站,甚至控制服务器。这个恶意脚本文件,又称为webshell,也可将webshell脚本称为一种网页后门,webshell脚本具有很强大的功能,比如查看服务器目录、服务器中的文件,执行绕过命令等。
修复建议
①通过白名单方式判断文件后缀是否合法。