博客
关于我
系统的讲解 - PHP WEB 安全防御
阅读量:464 次
发布时间:2019-03-06

本文共 1697 字,大约阅读时间需要 5 分钟。

Web安全防御指南

1. SQL注入攻击

定义

SQL注入是一种通过恶意输入篡改数据库查询,执行未经授权的SQL命令,从而获取敏感数据或造成数据破坏的攻击方式。

案例

  • 恶意输入:用户名单引号或双引号,密码正常值。
  • 注入结果:SQL语句变为SELECT * FROM user WHERE username='' OR 1=1--' AND password='123456',返回所有用户数据。

危害

  • 数据泄露、库删除、表删除、权限提升、文件读取等。

防御

  • 使用安全的数据库扩展(如PHP的PDO)进行查询。
  • 避免使用addslashesmysql_real_escape_string,直接使用框架ORM。
  • 开源工具推荐:SQLmap

2. XSS攻击

定义

XSS攻击是通过恶意代码注入网页,随着页面加载而自动执行,攻击者可窃取信息或进行其他恶意行为。

类型

  • 存储型:恶意代码存储在服务器(如论坛、留言板)。
  • 反射型:恶意代码通过链接传递,用户点击后跳转执行。
  • DOM型:恶意代码通过页面DOM元素注入。
  • 案例

    • 存储型:论坛输入><script>alert("xss")</script>提交。
    • 反射型:输入xxx.php?name=<script>alert("xss")</script>
    • DOM型:页面脚本注入document.write(decodeURI(document.URL+'test')).

    防御

    • 使用安全框架(如Laravel、Twig)或模板引擎。
    • 设置HttpOnly属性,禁止SameSite
    • 使用Content Security Policy白名单管理脚本源。

    推荐工具:BeEF

    3. SSRF攻击

    定义

    攻击者通过注入恶意代码,伪造服务器请求,利用服务器访问内部资源。

    案例

    • 使用curl执行恶意请求:
      $ch = curl_init();curl_setopt($ch, CURLOPT_URL, $_GET['url']);curl_exec($ch);
    • 恶意URL:file:///etc/passwddict://127.0.0.1:3306/info

    防御

    • 验证请求参数,限制协议为HTTP/HTTPS。
    • 设置白名单或IP限制,禁止跳转。

    4. CSRF攻击

    定义

    攻击者伪装成受信任用户,通过 CSRF token 进行跨站请求伪造。

    案例

  • 登录生成 CSRF token。
  • 未退出时访问危险链接。
  • 危害

    • 依据受信任网站功能,可窃取信息、发广告、控制购物等。

    防御

    • 使用 CSRF token 验证表单。
    • 增加二次验证(如短信验证)。
    • 设置httponly属性,防止 cookie 被 XSS 攻击。

    5. 文件上传漏洞

    定义

    攻击者上传可执行文件(如webshell),执行恶意代码。

    危害

    可直接获取服务器控制权,风险大于 SQL注入和 XSS。

    防御

    • 检查文件扩展名和 MIME 类型。
    • 设置文件目录不可执行权限。
    • 使用单独域名文件服务器。

    6. 信息泄露

    定义

    敏感数据(如手机号、密码、源码)泄露。

    案例

    • 接口返回明文手机号。
    • 调试信息未清理。

    防御

    • 敏感数据脱敏。
    • 禁止提交调试信息(如phpinfo())。
    • 定期扫描源码项目。

    7. 越权

    定义

    未授权访问超出权限范围的数据或功能。

    类型

  • 水平越权:用户A访问用户B数据。
  • 垂直越权:未登录用户访问后台模块。
  • 案例

    • 修改URL参数访问其他用户订单。
    • 未登录访问后台模块。

    防御

    • 严格判断用户身份权限。
    • 检查权限级别,防止越权访问。

    8. 设计缺陷

    返回信息过多

    • 返回“用户不存在”或“已被禁用”,助于攻击者猜测。
    • 应统一返回“用户名或密码错误”。

    短信接口被攻击

    • 短信注册登录直接触发接口,易被轰炸。
    • 防御措施:
      • 设置短信发送间隔和限制。
      • 升级验证方式(如滑动验证、文字点选)。

    小结

    通过本文的梳理,掌握了 SQL注入、XSS、SSRF、CSRF 等多种安全威胁及其防御方法。开发过程中需时刻警惕用户输入,数据经过严格校验。推荐开源工具 bWAPP 进行漏洞演示。

    转载地址:http://piibz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现knight tour骑士之旅算法(附完整源码)
    查看>>
    Objective-C实现KNN算法(附完整源码)
    查看>>
    Objective-C实现koch snowflake科赫雪花算法(附完整源码)
    查看>>
    Objective-C实现KPCA(附完整源码)
    查看>>
    Objective-C实现kth order statistick阶统计量算法(附完整源码)
    查看>>
    Objective-C实现LRU 缓存算法(附完整源码)
    查看>>
    Objective-C实现lstm prediction预测算法(附完整源码)
    查看>>
    Objective-C实现max subarray sum最大子数组和算法(附完整源码)
    查看>>
    Objective-C实现MaximumSubarray最大子阵列(动态规划解决方案)算法(附完整源码)
    查看>>
    Objective-C实现max_heap最大堆算法(附完整源码)
    查看>>
    Objective-C实现md5算法(附完整源码)
    查看>>
    Objective-C实现memoization优化技术算法(附完整源码)
    查看>>
    Objective-C实现memset函数功能(附完整源码)
    查看>>
    Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
    查看>>
    Objective-C实现merge sort归并排序算法(附完整源码)
    查看>>
    Objective-C实现mergesort归并排序算法(附完整源码)
    查看>>
    Objective-C实现miller rabin米勒-拉宾素性检验算法(附完整源码)
    查看>>
    Objective-C实现Miller-Rabin素性测试程序(附完整源码)
    查看>>
    Objective-C实现MinhashLSH算法(附完整源码)
    查看>>
    Objective-C实现MinHeap最小堆算法(附完整源码)
    查看>>