在各种语言脚本的环境下,也会产生一些新的漏洞,如果是java又能产生那些漏洞,思维导图里面常规漏洞之前都有;
java的访问控制,jwt令牌(php几乎没有)组件安全,这些都是java特有的
#综合漏洞,sql注入
防御sql注入,接受session,参数绑定,存储过程中这样注入;
接受session:这个意思就是他取sql语句不是你发什么他就接受什么,取你s型里面的,类似于cookie的数据,这里的值,一般s型都存储在对方服务器里面,一般不去操作对方服务器,这个s型数据是不可伪造的。从服务器上面取固定值,而不是网站上发送什么数据,接受什么数据。
参数绑定方式:采用了预编译技术,这个就是,
---PreparedStatement ,SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。(这里是PreparedStatement不允许一个占位符(?)有多个值,注入的语句也就不会被执行)
使用整个PreparedStatement,可以阻止大部分sql注入,但还是可以尝试绕过;在使用参数化查询时,数据库系统不会将参数作为sql语句去执行,他不会将你的参数值当作sql语句去执行,就等于个字符串,没有意义,在参数化查询中,sql语句格式是已经规定好的,要查的数据也固定好了,
假如他只接受一个1,在1后面写上注入语句之后,他之后代入1正常sql查询,后面的sql攻击语句不给予执行的机会。
这种情况该如何去绕过,我们可以case when 语句去绕过预编译的,语句可以将 order by 后的 orderExpression 表达式中添加 select 语句。(原理类似堆叠注入,一条语句出现多条命令)
为什么可以绕过,在后面可以添加select语句,而case when,他把注入代码写到后门来,
s
s
s