时间:2021-05-22
一、什么是XSS攻击
xss攻击:----->web注入
xss跨站脚本攻击(Cross site script,简称xss)是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称之为“跨域脚本”。
我们常常听到“注入”(Injection),如SQL注入,那么到底“注入”是什么?注入本质上就是把输入的数据变成可执行的程序语句。SQL注入是如此,XSS也如此,只不过XSS一般注入的是恶意的脚本代码,这些脚本代码可以用来获取合法用户的数据,如Cookie信息。
PS: 把用户输入的数据以安全的形式显示,那只能是在页面上显示字符串。
django框架中给数据标记安全方式显示(但这种操作是不安全的!):
把要传给页面的字符串做安全处理 ----> s = mark_safe(s)
二、测试代码
实施XSS攻击需要具备两个条件:
一、需要向web页面注入恶意代码;
二、这些恶意代码能够被浏览器成功的执行。
解决办法:
1、一种方法是在表单提交或者url参数传递前,对需要的参数进行过滤。
2、在后台对从数据库获取的字符串数据进行过滤,判断关键字。
3、设置安全机制。
django框架:内部机制默认阻止了。它会判定传入的字符串是不安全的,就不会渲染而以字符串的形式显示。如果手贱写了safe,那就危险了,若想使用safe,那就必须在后台对要渲染的字符串做过滤了。所以在开发的时候,一定要慎用安全机制。尤其是对用户可以提交的并能渲染的内容!!!
这里是不存在xss漏洞的写法,因为django已经做了防攻击措施
index.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><h1>评论</h1>{% for item in msg %}{# <div>{{ item|safe }}</div>#} #这里被注释的,是因为,|safe 加了这个就认为是安全的了,写入 <script> alert(123)</script> 就会恶意加载 <div>{{ item}}</div>{% endfor %}</body></html>conment.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="/comment/" method="POST"> <input type="text" name="content"> <input type="submit" value="提交"></form></body></html>views.py
from django.shortcuts import render,HttpResponse# Create your views here.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})########################################################def test(request): from django.utils.safestring import mark_safe temp = "<a href='http://ment/" method="POST"> <input type="text" name="content"> <input type="submit" value="提交">{{ error }}</form></body></html>以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
JSPspringboot/cloud使用filter防止XSS一.前言XSS(跨站脚本攻击)跨站脚本攻击(CrossSiteScripting),为不和层叠样
本文实例讲述了Laravel5中防止XSS跨站攻击的方法。分享给大家供大家参考,具体如下:Laravel5本身没有这个能力来防止xss跨站攻击了,但是这它可以使
本文实例讲述了Yii框架防止sql注入,xss攻击与csrf攻击的方法。分享给大家供大家参考,具体如下:PHP中常用到的方法有:?123456789101112
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(CascadingStyleSheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web
XSS又称CSS,全称CrossSiteScript(跨站脚本攻击),XSS攻击类似于SQL注入攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻