Django之XSS攻击

Stella981
• 阅读 513

Django之XSS攻击

XSS是什么:XSS是跨站脚本攻击。

XSS可以获取用户的信息,比如登录凭证Cookie,那样就可以登录用户的账号,但是在django中,XSS 是默认阻止的。因为在django中,a标签是字符串类型的。

比如在评论中提叫script的代码,会以字符串的形式显示出来。

views.py

msg = []

def comment(request):
    if request.method =="GET":
        return render(request,"comment.html")
    else:
        v = request.POST.get("content")
        msg.append(v)
        return render(request,"comment.html")

def index(request):
    return render(request,"index.html",{"msg":msg})

comment.html

<body>
    <form action="/comment/" method="post">
        <input type="text" name="content">
        <input type="submit" value="submit">
    </form>
</body>
</html>

index.html

<body>

    <h1>评论</h1>
    {% for foo in msg %}
        <div>{{ foo }}</div>
    {% endfor %}

</body>
</html>

结果:

Django之XSS攻击

  但XSS也是可以生效的,那就是使其这个提交的评论是safe的。

  index.html

<body>
    <h1>评论</h1>
    {% for foo in msg %}
        <div>{{ foo|safe }}</div>
    {% endfor %}

</body>
</html>

  这样的话,只要在前端提交一个script的代码,那么基本上每次访问index页面都会有alert提示。

 Django之XSS攻击

   这样的话,那个script会以代码的形式注入到页面中,并运行。

Django之XSS攻击

  但是如何不写safe,也可以阻止XSS,也既是要在提交的数据中进行筛选。

  views.py

msg = []

def comment(request):
    if request.method =="GET":
        return render(request,"comment.html")
    else:
        v = request.POST.get("content")
        if "script" in v:
            return render(request,"comment",{"error":"禁止XSS注入,存在安全隐患"})
        else:
            msg.append(v)
            return render(request,"comment.html")

 comment.html

<body>    <form action="/comment/" method="post">
        <input type="text" name="content">
        <input type="submit" value="submit">{{ error }}
    </form></body>

 导入from django.utils.safestring import mark_safe  也是可以的

Django之XSS攻击

  用mark_safe也是可以阻止的。

  总结:

    阻止XSS的两种方式:

        一、在前端模板里标记safe

        二、在后端代码中使用模块的方法mark_safe

------------ END -----------

点赞
收藏
评论区
推荐文章
李志宽 李志宽
2年前
什么是XSS攻击?XSS攻击有哪几种类型?
前言:网络安全攻击方式有很多种,其中包括XSS攻击、SQL注入攻击、URL篡改等。那么XSS攻击到底是什么?XSS攻击有哪几种类型?今天小编为大家讲解一下。  什么是XSS攻击?XSS攻击又称为跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行。XSS是一种经常出现在Web应用程序中的计算机安全漏洞,是由于Web应用程序对用户的输入过滤不足而产生的,它
Stella981 Stella981
2年前
Spring Boot XSS 攻击过滤插件使用
XSS是什么XSS(CrossSiteScripting)攻击全称跨站脚本攻击,为了不与CSS(CascadingStyleSheets)名词混淆,故将跨站脚本攻击简称为XSS,XSS是一种常见web安全漏洞,它允许恶意代码植入到提供给其它用户使用的页面中。xss攻击流程!(https:
Stella981 Stella981
2年前
1006.Web安全攻防靶场之WebGoat – 2
概述由于上一篇文章Web安全攻防靶场之WebGoat1过长,这里分开写后面内容使用CrossSiteScripting(XSS)跨站脚本攻击,跨站脚本分为三类1\.ReflectedXSSInjection反射型xss通过一个链接产生的xss
Wesley13 Wesley13
2年前
PHP防XSS攻击
防XSS攻击什么是XSS攻击代码实例:<html<head<metahttpequiv"ContentType"content"text/html;charsetutf8"/<titleXSS原理重现</title</head<bo
可莉 可莉
2年前
1006.Web安全攻防靶场之WebGoat – 2
概述由于上一篇文章Web安全攻防靶场之WebGoat1过长,这里分开写后面内容使用CrossSiteScripting(XSS)跨站脚本攻击,跨站脚本分为三类1\.ReflectedXSSInjection反射型xss通过一个链接产生的xss
Stella981 Stella981
2年前
Django自身安全机制
XSS攻击什么是XSS攻击XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(https://www.oschina.net/action/GoT
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
HostOnly Cookie 及Js对cookie操作
HostOnlyCookie要理解HttpOnly的作用,要先弄懂XSS攻击,即跨站脚本攻击,大伙可以Google一下看看XSS到底是什么,来自wikipedia的解释:跨网站脚本(Crosssitescripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。
Wesley13 Wesley13
2年前
信息安全
ylbtech信息安全攻击XSS:XSS/CSS攻击XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、Flash或者甚至是普通的HTML。攻击成功后
欣喜若狂 欣喜若狂
11个月前
XSS攻击问题皕杰报表解决方案
XSS表示CrossSiteScripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在XSS攻击中,通过插入恶意脚本,实现对用户游览器的控制。XSS攻击可以分成两种类型:1