常用的攻击手段
CRLF
- 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a), 在URL中传入换行符后修改头部字段或执行Redis命令Python3.x urlopen攻击
注入攻击
- 通过修改sql的传入参数范围来改变结果值,如下;
- 解决方案:在代码中参数一定要作为参数传入,而不能直接传入字符串
"select * from students where password = '%s'" % password
--将password传入为"'; drop table students;--",将会删除students表
XSS cross-site scripting 跨站攻击
- 参数没有验证导致直接传入javascript,防范措施:html转义,如下代码模拟
@app.route('/hello', methods=['GET', 'POST'])
def hello():
name = request.args.get('name')
return '<h1>Hello, Flask</h1> %s ' % name
# /hello?name=<script>alert('Bingo!');</script>
CSRF跨站点伪造
-
在伪造网站中嵌入真实网站的url连接,用户方位伪造网站后将使用自己的session与cookie取访问真实网站的url连接,伪造网站可以通过嵌入真实网站的关键连接来删除用户或者修改用户密码等
-
解决方法:正确的使用http方法,关键数据修改使用POST而不是GET;或者使用CSRF令牌,分配临时伪随机数,客户在提交数据前判断随机数是否与访问时一直