主要讲解了 SQL注入攻击、XSS攻击、SSRF攻击、CSRF攻击、文件上传漏洞、信息泄露、越权、设计缺陷等八大方面,通过这次的梳理,也使我自己对PHP WEB安全防御有了一个全面了解。
2019年(1)
分类: PHP
2019-03-06 15:17:01
SQL注入攻击是通过WEB表单提交、URL参数提交或Cookie参数提交,将怀有恶意的“字符串”,提交到后台数据库,欺骗服务器执行恶意的SQL语句。
//以用户登录为例,当验证用户名和密码是否正确时
$sql = "SELECT * FROM user WHERE
username = '".$_GET['username']."' AND
password = '".$_GET['password']."'";
用户恶意输入:
$_GET['username'] = "' or 1=1 -- '";
$_GET['password'] = "123456";
注入后的Sql语句:
$sql = "SELECT * FROM user WHERE username = ''
or 1=1 -- ''AND password = '123456'";
执行注入后的Sql语句,可以返回 user 表的全部数据。
平时我们可以进行自测,比如使用单引号、双引号等,如果是数字就进行 +1 或 -1。
众所周知,SQL注入的危害很大,利用SQL注入可以进行,拖库、删库、删表、UDF提权、读取文件、...
在这里,推荐一个开源的自动化的SQL注入工具。
SQLmap:
支持各种数据库管理系统(MySql、Oracle、SQL Server、SQLite ... )。
支持自动识别密码哈希格式并通过字典破解密码哈希。
支持枚举用户、密码、哈希、权限、角色、数据库、数据表和列。
支持完全地下载某个数据库中的某个表、某个列。
支持在数据库管理系统中搜索指定的数据库名、表名或列名。
支持下载或上传文件。
支持执行任意命令并回现标准输出。
支持布尔型盲注、时间型盲注、基于错误信息的注入、联合查询注入和堆查询注入。
尝试着利用工具,注入自己的项目,发现问题,然后并解决问题。
SQL注入的危害,远比我们想象的要大!
推荐解决方案是使用 PDO 或 MySQLi 的数据库扩展。
PHP官方文档中介绍,MySQL扩展自PHP 5.5.0起已废弃,并在自PHP7.0.0开始被移除。
如果已经在用MySQL扩展了,可以对传入的每个参数做验证,并使用框架的ORM进行查询。
另外:addslashes 和 mysql_real_escape_string 这种转义是?安全的!
XSS攻击是一种经常出现在WEB应用中的计算机安全漏洞,通过WEB表单提交或URL参数提交,将代码植入在用户的使用页面上。
存储型
注入的恶意代码存储在服务器上(常用于留言板、论坛帖子、CRM),受害者请求服务器获取信息的时候,这些恶意代码就被浏览器成功执行。
反射型
注入的恶意代码没有存储在服务器上,通过引诱用户点击一个链接到目标网站进行实施攻击。
DOM型
注入的恶意代码并未显式的包含在web服务器的响应页面中,但会被页面中的js脚本,以变量的形式来访问到,从而来进行实施攻击。
存储型:论坛帖子界面input输入框中,输入 />