多语言展示
当前在线:1024今日阅读:195今日分享:41

CSRF跨站请求伪造的模拟GET请求实例

CSRF跨站请求伪造是常见的网络攻击方式,这里使用Django搭建服务器,使用浏览器模拟GET请求操作。
方法/步骤
1

在命令行创建django工程djcsrfget,在工程内创建应用testget,命令如下:django-admin startproject djcsrfgetcd djcsrfgetpython manage.py startapp testget

2

使用PyCharm打开此工程,在工程的同名的文件夹的settings文件,添加应用配置和模板路径,修改的settings.py内容如下:INSTALLED_APPS = [     'django.contrib.admin',     'django.contrib.auth',     'django.contrib.contenttypes',     'django.contrib.sessions',     'django.contrib.messages',     'django.contrib.staticfiles',     'csrfget.apps.CsrfgetConfig', ]    ROOT_URLCONF = 'djcsrftest.urls'  TEMPLATES = [     {         'BACKEND': 'django.template.backends.django.DjangoTemplates',         'DIRS': [os.path.join(BASE_DIR,'templates')],         'APP_DIRS': True,         'OPTIONS': {             'context_processors': [                 'django.template.context_processors.debug',                 'django.template.context_processors.request',                 'django.contrib.auth.context_processors.auth',                 'django.contrib.messages.context_processors.messages',             ],         },     }, ]

3

在项目根目录,新建templates文件夹,并在文件夹内新建‘login.html’和‘index.html’文件,内容如下:login.html            Title       

         {% csrf_token %}                           
         
                           
         
              
     index.html             Title       

欢迎{{user}}

     

         转账     

  

4

在工程的同名文件夹的urls.py文件,include到应用的urls.py文件,代码如下:from django.conf.urls import url,include from django.contrib import admin  urlpatterns = [     url(r'^admin/', admin.site.urls),     url(r'',include('csrfget.urls')), ]在应用内新建urls.py文件,并写代码如下:from django.conf.urls import url from . import views  urlpatterns = [     url(r'login/',views.login),     url(r'index/',views.index),     url(r'transfer/',views.transfer) ]

5

在应用的views.py写代码如下,包含三个方法,登录,首页,转账from django.shortcuts import render,HttpResponse,redirect from django.contrib import auth from django.contrib.auth.decorators import login_required # Create your views here.  def login(request):     if request.method == 'POST':        username = request.POST.get('username')        password = request.POST.get('password')        user = auth.authenticate(username=username, password=password)        if user:            auth.login(request,user)            print ('ok')            return redirect('/index/')      return render(request,'login.html')  @login_required(login_url='/login/') def index(request):     return render(request,'index.html')  @login_required(login_url='/login/') def transfer(request):     return HttpResponse('you have tansfer 1000RMB')转账和首页都是必须登录后才能进入

6

进行数据库迁移并创建一个超级用户,打开开发工具的terminalpython manage.py migratepython manage.py createsuperuser

7

运行服务器,登录上一步创建的用户,在首页点击transfer,弹出下图第三个试想如果这个连接是别人发过来的,在用户已经登录后同样可以操作,只要是在同一个浏览工具,就有当前用户的cookie。python manage.py runserver

推荐信息