通过前期的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进行破解,对令牌数据进行破解