• 四十:JAVA安全-JWT安全及预编译CASE注入


    通过前期的WEB漏洞的学习,掌握了大部分的安全漏洞的原理及利用,但是在各种脚本语言开发环境的差异下,存在新的安全问题,脚本语言类型PHP,JAVA,Python等主流开发框架会有所差异

    SQL-injection

    防御SQL注入,其实就是session,参数绑定,存储过程这样的注入
    //利用session防御,session内容正常情况下是用户无法修改的select * from users where user = "'" + session getAttribute("userID") + "'";
    

    参数绑定方式,利用了SQL的预编译技术

    使用预编译的preparedstatement的参数化查询可以组织大部分的SQL注入
    使用PreparedStatement的参数化的查询可以阻止大部分的SQL注入。在使用参数化查询的情况下,数据库系统不会将参数的内容视为SQL指令的一部分来处理,而是在数据库完成SQL指令的编译后,            
        才套用参数运行,因此就算参数中含有破坏性的指令,也不会被数据库所运行。因为对于参数化查询来说,查询SQL语句的格式是已经规定好了的,需要查的数据也设置好了,缺的只是具体的那几个 
       数据而已
    
    case when带入SQL语句可以绕过
    

    什么是JWT (跨域身份解决方案)

    JSON web token(json 令牌)是一种跨域验证的方案。JWT不加密传输的数据,但是能够通过数字签名来验证数据未被篡改
    
    JWT分为头部(header),声明(claims),签名(signature),三个部分以英文句号隔开,JWT的内容进行了base64编码
    
    
    
    
    一般采用SHA-256的base64加密
    
    1、服务端根据用户登录状态,将用户信息加密到token中,返给客户端
    2、客户端收到服务端返回的token,存储在cookie中
    3、客户端和服务端每次通信都带上token,可以放在http请求头信息中,如:Authorization字段里面
    4、服务端解密token,验证内容,完成相应逻辑
    
    
       头部,声明,签名。可以修改头部和声明,加密修改为none,声明修改为true。
    
       JWT进行破解,对令牌数据进行破解
  • 相关阅读:
    在IT行业工作如何获得高薪?选择前沿的技术,把准方向,有技术有人缘
    如何去做不想做的事情的 - 10个建议
    如何去做不想做的事情的 - 10个建议
    项目管理
    项目管理
    Spring Quartz 定时任务
    Spring Quartz 定时任务
    Spring @Transactional (一)
    Spring @Transactional (一)
    Search Insert Position
  • 原文地址:https://www.cnblogs.com/SnowSec/p/14374695.html
Copyright © 2020-2023  润新知