• 四十: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进行破解,对令牌数据进行破解
  • 相关阅读:
    第1次系统综合实践作业
    个人作业——软件工程实践总结
    个人作业——软件评测
    2019软件工程第五次作业
    预习非数值数据的编码方式
    预习原码补码作业
    C语言寒假大作战04
    C语言寒假大作战03
    C语言寒假大作战02
    C语言寒假大作战01
  • 原文地址:https://www.cnblogs.com/SnowSec/p/14374695.html
Copyright © 2020-2023  润新知