用Django模拟GET请求的CSRF攻击例子

创建Django项目和应用 在命令行中使用以下命令创建一个名为djcsrfget的Django工程和一个名为testget的应用: ``` django-admin startproject d

创建Django项目和应用

在命令行中使用以下命令创建一个名为djcsrfget的Django工程和一个名为testget的应用: ``` django-admin startproject djcsrfget cd djcsrfget python startapp testget ```

配置Django项目

使用PyCharm等编辑器打开该Django项目,并在项目的同名文件夹内的settings文件中进行如下配置: ```python INSTALLED_APPS [ '', '', '', '', '', '', 'testget', ] ROOT_URLCONF 'djcsrfget.urls' TEMPLATES [ { 'BACKEND': '', 'DIRS': [(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ '_', '_', '_', '_', ], }, }, ] ```

添加HTML模板文件

在项目的根目录中新建一个名为templates的文件夹,并在该文件夹内分别创建和文件,文件内容如下: ```html Title
{% csrf_token %}



``` ```html Title

欢迎{{user}}

转账

```

配置URL路由

在同名文件夹的文件中,将应用的文件include进来,代码如下: ```python from import url, include from import admin urlpatterns [ url(r'^admin/', ), url(r'', include('testget.urls')), ] ``` 在应用内新建文件,并写入以下内容: ```python from import url from . import views urlpatterns [ url(r'^login/$', views.login), url(r'^index/$', ), url(r'^transfer/$', ), ] ```

编写视图函数

在应用的文件中,编写三个视图函数:login、index和transfer。其中login用于处理用户登录,index用于显示用户首页,transfer用于模拟转账操作。代码如下: ```python from import render, HttpResponse, redirect from import auth from import login_required def login(request): if 'POST': username ('username') password ('password') user (usernameusername, passwordpassword) if user: auth.login(request, user) print('ok') return redirect('/index/') return render(request, '') @login_required(login_url'/login/') def index(request): return render(request, '') @login_required(login_url'/login/') def transfer(request): return HttpResponse('you have transferred 1000RMB') ```

标签: