美文网首页
SQL注入和Clickjack保护

SQL注入和Clickjack保护

作者: 大爷的二舅 | 来源:发表于2018-04-03 14:47 被阅读39次
SQL注入保护

SQL注入是一种恶意用户能够在数据库上执行任意SQL代码的攻击类型。这可能会导致记录被删除或数据泄漏。

通过使用Django的查询集,生成的SQL将被底层数据库驱动程序正确转义。但是,Django还为开发人员提供了编写原始查询或执行自定义sql的能力。应该谨慎使用这些功能,并且您应该小心妥善地转义用户可以控制的任何参数。另外,使用extra()时应该小心。

点击劫持保护

点击劫持是一种恶意网站在一个框架中包装另一个网站的攻击类型。当恶意网站欺骗用户点击隐藏的框架或iframe中加载的其他网站的隐藏元素时,会发生此类攻击。

Django包含X-Frame-Options中间件形式的clickjacking保护,在支持的浏览器中可以防止站点在框架内呈现。可以基于每个视图禁用保护或配置发送的确切报头值。

强烈建议中间件用于任何不需要第三方站点将其页面包装在一个框架中的站点,或者只需要允许该站点的一小部分使用该中间件。

Clickjacking的一个例子

假设在线商店有一个页面,登录的用户可以点击“立即购买”来购买商品。为方便起见,用户选择始终保持登录商店。攻击者网站可能会在其自己的某个页面上创建一个“我喜欢小马”按钮,并将该商店的页面加载到透明的iframe中,以便“立即购买”按钮无形覆盖在“我喜欢小马”按钮上。如果用户访问攻击者的网站,点击“我喜欢小马”会导致无意中点击“立即购买”按钮和未知购买该项目。

防止点击劫持

现代浏览器承认X-Frame-Options HTTP标头,该标头指示是否允许在帧或iframe中加载资源。如果响应包含值为SAMEORIGIN的头部,则浏览器将只在源自同一站点的请求中加载资源。如果标题设置为拒绝,那么无论哪个站点发出请求,浏览器都会阻止资源加载到框架中。

Django提供了几种简单的方法在您的站点的响应中包含这个头文件:

  • 一个简单的中间件,它在所有响应中设置标题。

  • 一组视图装饰器,可用于覆盖中间件或仅为某些视图设置标题。

如何使用它
为所有响应设置X-Frame-Options

要为您的网站中的所有响应设置相同的X-Frame-Options值,请将'django.middleware.clickjacking.XFrameOptionsMiddleware'设置为MIDDLEWARE_CLASSES:

MIDDLEWARE_CLASSES = [
    # ...
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    # ...
]

该中间件在startproject生成的设置文件中启用。

默认情况下,中间件将为每个传出的HttpResponse设置X-Frame-Options标头为SAMEORIGIN。 如果您想要使用DENY,请设置X_FRAME_OPTIONS设置:

X_FRAME_OPTIONS = 'DENY'

在使用中间件时,可能会出现一些您不希望X-Frame-Options标头设置的视图。 对于这些情况,您可以使用视图装饰器来告诉中间件不要设置标题:

from django.http import HttpResponse
from django.views.decorators.clickjacking import xframe_options_exempt

@xframe_options_exempt
def ok_to_load_in_a_frame(request):
    return HttpResponse("This page is safe to load in a frame on any site.")
设置每个视图的X-Frame-Options

为了在每个视图基础上设置X-Frame-Options标头,Django提供了这些装饰器:

from django.http import HttpResponse
from django.views.decorators.clickjacking import xframe_options_deny
from django.views.decorators.clickjacking import   xframe_options_sameorigin

@xframe_options_deny
def view_one(request):
    return HttpResponse("I won't display in any frame!")

@xframe_options_sameorigin
def view_two(request):
    return HttpResponse("Display in a frame if it's from the same    
      origin as me.")

请注意,您可以将装饰器与中间件一起使用。 使用装饰器会覆盖中间件。

限制

X-Frame-Options标题只能防止在现代浏览器中发生点击劫持。
较旧的浏览器将悄悄忽略标题并需要其他防止点击劫持技术。

支持X-Frame-Options的浏览器
  • Internet Explorer 8+
  • Firefox 3.6.9+
  • Opera 10.5+
  • Safari 4+
  • Chrome 4.1+

相关文章

  • SQL注入和Clickjack保护

    SQL注入保护 SQL注入是一种恶意用户能够在数据库上执行任意SQL代码的攻击类型。这可能会导致记录被删除或数据泄...

  • web常见漏洞的成因和修复

    1.SQL注入 漏洞描述:SQL 注入攻击( SQL Injection ),简称注入攻击、SQL 注入,主要用于...

  • 笔记:web漏洞

    SQL注入 SQL注入攻击(SQL Injection),简称注入攻击、SQL注入,被广泛用于非法获取网站控制权,...

  • 谈谈sql注入之原理和防护(-)

    谈谈sql注入(二)谈谈sql注入(三)谈谈sql注入(四)所谓SQL注入,就是通过把SQL命令插入到Web表单提...

  • 小迪16期-20170226

    第二天:Sql注入集锦篇 1.Sql注入之access注入 2.Sql注入之mysql注入 3.Sql注入之mss...

  • 第四章 SQL 注入

    要点 SQL注入 SQL注入防护 一、SQL注入 SQL注入:黑客会通过构造一些恶意的输入参数,在应用拼接 SQL...

  • PHP代码安全之SQL注入

    PHP代码安全之SQL注入 1、什么是SQL注入? SQL攻击(英语:SQL injection),简称注入攻击,...

  • 谈谈sql注入之语句构造手法(二)

    谈谈sql注入(一)谈谈sql注入(三)谈谈sql注入(四)SQL注入的手法相当灵活,在注入的时候会碰到很多意外的...

  • SQL注入三部曲-初级

    目录 什么是SQL注入SQL注入产生的原因SQL注入攻击方式如何进行SQL注入SQL注入三部曲 1.渗透攻防WEB...

  • sql注入那些事儿——如何优雅地进行SQL注入(3)

    传送门: sql注入那些事儿——如何优雅地进行SQL注入(1)sql注入那些事儿——如何优雅地进行SQL注入(2)...

网友评论

      本文标题:SQL注入和Clickjack保护

      本文链接:https://www.haomeiwen.com/subject/ydaqhftx.html