zoukankan      html  css  js  c++  java
  • 跟bWAPP学WEB安全(PHP代码)--认证绕过与会话管理

    背景



    这里主要是代码逻辑问题,而不是代码使用函数的问题,因此在这个里面就不粘贴具体代码了,而是分类介绍下bWAPP中涉及的安全问题:

    • 验证码问题
    • 找回问题
    • 账号口令问题
    • Cookies问题
    • Session问题

    验证码问题



    常见漏洞:


    验证码可穷举、验证码可识别、验证码被传送到客户端、验证码前端校验、验证码可重放、验证码无验证或验证有问题等等

    • 验证码可穷举:只验证码为优先数量,且不够随机出现,规律被攻击者获知,可以通过脚本去尝试遍历。
    • 验证码可识别:利用图像识别代码识别验证码之后发送。可以绕过验证码检测机制。
    • 验证码被传到客户端:在头部字段里面(含session)或者在前端页面显示或者在前端代码里面。
    • 验证码前端校验:指验证码比对在前端,攻击者可以修改前端页面中的脚本代码逻辑绕过。
    • 验证码可重放:指验证码利用一次之后,并没有改变,可以多次重复利用。
    • 验证码无验证或验证有问题:空验证码、任意验证码、特殊验证码等等至少一个手段可以绕过验证码

    代码逻辑


    验证码应该每次随机生成,且不能相同(对抗穷举和重放)。图像足够复杂,且不能太短,短信邮箱验证码的验证时间要短。(对抗穷举和识别),验证码应该存储到服务器的session中,网站验证码不能明文传送到前端,校验需要放在服务器中进行。代码逻辑编写时候要注意校验逻辑,不要出错。同时对于短信和邮箱发送验证码要注意频率问题,避免短信或者邮件轰炸。

    找回问题



    常见漏洞


    这里只有一个问题,一种是没有足够的验证导致非账号拥有者可以重置或找回。注意下代码逻辑,对重置和找回要进行足够的认证,手段有:

    • 密保问题
    • 生物指纹
    • 手机和邮箱拥有(不推荐)
    • 令牌或token拥有(推荐)

    账号口令问题



    常见漏洞:


    常见问题,账号弱口令、SQL注入、万能密码、可以爆破、前端显示或校验,可以绕过等等。

    解决办法


    • 账号弱口令:配置强口令
    • SQL注入:避免此类漏洞
    • 万能密码:避免SQL注入也避免了万能密码
    • 可以爆破:采用验证码可控制
    • 前端显示和校验:密码明文和hash值不得传到前端,校验不能在前端进行
    • 可以绕过:忽略

    Cookies和Session问题



    基本是一类,因为头部字段一般只有cookies这个值,session是其中的一个字段,注意要加httponly,session不要在url中存储等等。

  • 相关阅读:
    洛谷4451 整数的lqp拆分(生成函数)
    CF1137C Museums Tour(Tarjan,强连通分量)
    CF932E Team Work(第二类斯特林数)
    CF1131F Asya And Kittens(Kruskal重构树,启发式合并)
    CF1131E String Multiplication(???)
    CF438E The Child and Binary Tree(生成函数,NTT)
    [HAOI2015]按位或(min-max容斥,FWT,FMT)
    【noi 2.6_9281】技能树(DP)
    【noi 2.6_9280】&【bzoj 1089】严格n元树(DP+高精度+重载运算符)
    【noi 2.6_9277】Logs Stacking堆木头(DP)
  • 原文地址:https://www.cnblogs.com/KevinGeorge/p/10333867.html
Copyright © 2011-2022 走看看