强力Django+杀手级Xadmin打造在线教育平台(十二)

君子以思患而豫防之

安全问题还是要搞一搞的: sql注入,xss攻击,crsf攻击。

sql注入攻击与防范

sql注入的危害

mark

对于用户的输入进行合法性判断。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class LoginUnsafeView(View):
def get(self, request):
return render(request, "login.html", {})
def post(self, request):
user_name = request.POST.get("username", "")
pass_word = request.POST.get("password", "")

import MySQLdb
conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='root', db='mxonline', charset='utf8')
cursor = conn.cursor()
sql_select = "select * from users_userprofile where email='{0}' and password='{1}'".format(user_name, pass_word)

result = cursor.execute(sql_select)
for row in cursor.fetchall():
# 查询到用户
pass
print 'hello'

urls.py
from users.views import LoginUnsafeView

urlpatterns = [
url('^login/', LoginUnsafeView.as_view(), name='login'),
]

参数中加入sql语句拼接字符串使之为真。

使用django的orm,它已经对这些做了处理

xss攻击

xss跨站脚本攻击(Cross Site Scripting)的危害

mark

正常流程

mark

mark

当传入iPhone6时,这个字符会被显示到页面中。

mark

将这段代码改成js代码

mark

黑客拿到你的cookie信息。然后伪装成用户。

Xss攻击防范

mark

crsf攻击与防护

crsf跨站请求伪造(Cross-site request forgery)的危害

mark

mark

用户并没有向a请求,而是访问了b。b要求用户访问a的。
原因:用户向a的每次请求都会带上session id

图片中插入。

提交form表单必须添加crsf token

攻击网站无法生成crsf token

-------------本文结束感谢您的阅读-------------

本文标题:强力Django+杀手级Xadmin打造在线教育平台(十二)

文章作者:mtianyan

发布时间:2018年01月16日 - 22:01

最后更新:2018年01月17日 - 00:01

原始链接:http://mtianyan.gitee.io/post/ac88a88.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

请博主吃包辣条
0%