白帽子讲web安全——笔札

1、注入攻击

引起危险:用户输入的数据被当作代码执行,这里有两个条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。

举例:select * from a where b=某一个变量,这个变量是用户能够控制输入的,他可能是sql的执行代码

防御:使用预编译(一般用这个)、使用存储过程、检查数据类型、使用安全函数

2、登录认证会话管理

1、密码必须使用不可逆,建议使用HMAC-SHA1代替MD5加密

2、现在一般服务端不维护session,把session的相关信息加密之后放入cookies中,强制设置几天让session失效

3、用户登录后,如果服务端维护session,那需要把之前的session给注销,并重新产生新session,否则会出现session fixation攻击(用前端的sessionId可以登录后台管理)

3、访问控制

RBAC——垂直权限,不同角色访问不同链接资源,有通用的解决方案

数据权限——水平权限,同一种角色访问私有的数据,至今没有解决方案

spring security学习成本高,而且不宜配置,建议还是自己写一个RBAC

单点登录:SSO有一个openId开放平台

第三方授权应用访问:OAuth,新浪微薄就有

4、加密

1、加密分成两种:分组加密、流加密

2、不要使用流加密

3、使用分组加密的,不要使用ECB模式(分组加密有四种模式)

4、不要自己实现加密算法,使用专家库

5、密钥等不要硬编码,尽量放在配置文件或者数据库中控制

6、使用CBC模式的AES256加密

7、HMAC-SHA512用于完整性检查

8、带有salt的SHA-256或者SHA-512用于Hashing

猜你喜欢

转载自gsdhaiji-cai.iteye.com/blog/1577697