java——sql注入:
防御sql注入,其实就是session,参数绑定,存储过程这样的注入。
//利用session防御, session内容正常情况下是用户无法修改的select *
from users where user =“'”+ session. getAttribute ("UserID")
+"'";
//参数绑定方式, 利用了sq1的预编译技术
String query = "SELECT * FROM users WHERE last_ name = "?";
Preparedstatement statement =connection. prepareStatement (query) ;
statement.setString(1,accountName) ;
ResultSet results = statement. executeQuery() ;
上面说的方式也不是能够绝对的进行sql注入防御,只是减轻。
如参数绑定方式可以使用下面方式绕过。
通过使用case when语句可以将order by后的orderExpression表达式中添加select语句。(类似于堆叠注入)
什么是Jwt?
JSON web Token (JSON web令牌)是种跨域验证身份的方案。JWT不加密传输的数据,但能够通过数字签名来验证数据未被篡改
JWT组成:头部(header),声明(claims),签名(signature)
JWT修改伪造攻击:
通过抓包获得token,再通过在线网站进行编码(jwt在线),通过更改相关信息进行绕过,如果不知道密钥,那么我们需要将头部内容改为空(none),签名也改为空
authorization也可以输入JWT值
爆破密钥:
通过脚本以及字典来爆破密钥
------
路径遍历
上传文件时,如果上传的文件名可自己更改,可加上../来上传到上一级目录。如果只有一次过滤../,可以使用双写绕过
能和目录解析一起使用
代码情况:需注意模块引用 路由地址 静态文件 简易代码理解等
#不安全登录Insecure Login- 基于前端认证
#熟悉代码结构及硕源代码文件
equals函数类似于== 功能是进行比较字符串
前端验证可以在前端代码中看到对应js文件,获取到账号密码或者通过抓包时触发js文件来获取
#访问控制对象-逻辑越权
#代码分析过关逻辑
枚举用户参数对应数据库的其他数据信息
role, userid
通过参数值构造URL获取用户更多的信息
标签:java,代码,JWT,安全,session,statement,sql From: https://www.cnblogs.com/juejuezi/p/17375235.html