• 安全 – 常见 Web 攻击


    前言

    最近在研究 WAF, 顺便记入一下常见的 Web 攻击.

     

    SQL Injection

    SQL injection 是指程序员直接拿 client input, 拼接到 SQL query 中. 从而导致 client 有能力可以操作 SQL.

    这个是年代久远的攻击了. 现在一般上都会使用 parameter 的方式把 client input 输入进 query 里, 而不是用拼接. 

    或者直接用 ORM 框架. 跳过写 query 这个环节.

    不只是 SQL Injection, 任何一种 XXX injection 原理都是一样的, 程序员对 client input 使用要敏感一些.

    不要拿了就用, 要假设 client 都是坏人, 用他们给的东西要先检查, 限制, 过滤. 

    比如用 Enum, int, 正则去确保用户只能给小范围的表达, 使用的时候要依据场合做 encode. 

    除了 SQL, 经常会用到 client input 做逻辑的还有 : Path, 反射调用, rich text 等等

    Cross-site Scripting (XSS)

    也算 injection 的一种, 它指的是用 client input 去拼接 HTML. 从而导致 client 有能力操作 HTML 页面.

    解决方法就是消毒. 限制. 过滤, Encode, 就那一套啦. 

    Command Injection

    也是 injection 的一种, 只是攻击的地方是调用 shell 这类的, 所以叫 command injection. 

    参考: 详解php命令注入攻击

    解决方法一样.

    HTTP Request Smuggling

    请求走私, 这个只会发生在, 有用 load balance, reverve proxy 反向代理, 这种情况. 

    它会通过一些手法骗过代理, 让它分发错误的信息给服务器. 

    我没有用过 load banlance 和反向代理, 所以也不清楚它具体怎样 hack.

    HTTP Response Splitting

    参考: 

    HTTP Response Splitting 攻击

    浅谈HTTP响应拆分攻击

    它也有点像 injection, 服务器在处理 302 时把 client input 直接写入 header location 里, 导致了 client 有能力控制 response.

    我没有深入研究, 想了解更多看上面的链接吧. 解决方法还是一样.

    Remote File Inclusion

    参考: 前端 RFI详解

    也算 injection 的一种, 直接用 client input 去拼接 file path.

    其它

    其余的还有 HTTP 协议检查, user-agent, accept headers, IIS configuration, protect 爬虫, scanner 等等啦.

    详细的 rules 保护看这里 Web Application Firewall CRS rule groups and rules

    此外, 它还防 DDos attack

    DDoS 和 CC Attack

    参考: DDoS攻击和CC攻击有什么区别?

    DDoS 攻击就是一直访问你的服务器, 造成巨大的压力, 让服务器卡死掉. 阻止它的方法一般上是去检查 IP, 放 cookie 做识别.

    然后阻止它一直访问. 自己防的话, 也是挺多工作要做的.

  • 相关阅读:
    根据数据库表字段动态生成选择画面
    ABAP中字符串处理方法小结(二)
    如何获取汉字字符串长度
    如何强制分页-[NEW-PAGE]
    如何设置输出颜色-[FORMAT..COLOR..]
    ◆◆0如何取得字符串最后一位
    VALSE2019
    pycharm使用总结
    生活经验
    爱情存在吗-3
  • 原文地址:https://www.cnblogs.com/keatkeat/p/15808191.html
Copyright © 2020-2023  润新知