服务器

例如,我们开发一个显示所有用户的留言的网站:
建立如下的flask项目:

app.py为python程序,代码:

import json
import flaskapp = flask.Flask(__name__)@app.route('/', methods=['GET', 'POST'])
def index():request = flask.requestwith open('messages.json', 'r', encoding='utf-8') as fp:data = json.load(fp)  # 读入用户留言data = list(data)  # 建议有这一句,防止JSON被篡改if request.method == 'GET':  # GET请求return flask.render_template('index.html', messages=data)else:   # POST请求message = request.form.get('message').strip()if not message:flask.flash('请填入信息')return flask.redirect(flask.url_for('index'))data.append(message)with open('messages.json', 'w', encoding='utf-8') as fp:json.dump(data, fp)  # 写入用户留言return flask.redirect(flask.url_for('index'))app.run(debug=True)

index.html为网站页面,代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>测试XSS注入</title><!-- 导入bootstrap --><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"><script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script><script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container"><ul><!-- Flask Jinja2模板-->{% for i in messages %}<li> {{ i }} </li>{% endfor %}</ul><br><hr><form method="post" action="/" class="bs-example bs-example-form" role="form"><!-- 用户输入框 --><div class="input-group" align="center"><span class="input-group-addon">留言:</span><input type="text" class="form-control" name="message"></div><hr><input type="submit" value="发送" class="btn btn-primary" align="center"></form>
</div>
{% for message in get_flashed_messages() %}
<div class="alert alert-warning"><a href="#" class="close" data-dismiss="alert">&times;</a><strong>{{ message }}</strong>
</div>
{% endfor %}
</body>
</html>

messages.json为用户信息储存器:

["test", "hello world"]

效果如下:

攻击者

现在,我们在网站的输入框中输入一句JavaScript代码:

alert("你已被XSS攻击!")


刷新网站后:

防御

(这里只提供最简单的思路)

我们加入如下代码:

nopass = ['<script>', 'SB']  # 违法字典,你也可以用它屏蔽脏话
for i in nopass:if i in message:flask.flash('信息不合法')return flask.redirect(flask.url_for('index'))

改动后的代码:

import json
import flaskapp = flask.Flask(__name__)@app.route('/', methods=['GET', 'POST'])
def index():request = flask.requestwith open('messages.json', 'r', encoding='utf-8') as fp:data = json.load(fp)  # 读入用户留言data = list(data)  # 建议有这一句,防止JSON被篡改if request.method == 'GET':  # GET请求return flask.render_template('index.html', messages=data)else:   # POST请求nopass = ['<script>', 'SB']  # 违法字典,你也可以用它屏蔽脏话message = request.form.get('message').strip()if not message:flask.flash('请填入信息')return flask.redirect(flask.url_for('index'))for i in nopass:if i in message:flask.flash('信息不合法')return flask.redirect(flask.url_for('index'))data.append(message)with open('messages.json', 'w', encoding='utf-8') as fp:json.dump(data, fp)  # 写入用户留言return flask.redirect(flask.url_for('index'))app.run(debug=True)

python网站安全(一): XSS注入相关推荐

  1. web漏洞利用---XSS注入攻击

    XSS漏洞简介 XSS注入漏洞又称为"跨站脚本攻击(Cross Site Scripting)",为了不和层叠样式表(Cascading Style Sheets,CSS)混淆,所 ...

  2. Java防止Xss注入json_浅谈 React 中的 XSS 攻击

    作者:陈吉 转发链接:https://mp.weixin.qq.com/s/HweEFh78WXLawyQr_Vsl5g 前言 前端一般会面临 XSS 这样的安全风险,但随着 React 等现代前端框 ...

  3. php 避免xss_PHP防止XSS注入

    我们在做网站的时候,经常有input提交,通常前端对input中的内容不做判断,只做不为空等简单的操作.但是,有的input中会提交一些javascript或者html,会给网站造成一定的危害.为此, ...

  4. 【渗透测试】XSS注入原理

    目录 XSS注入原理 XSS的危害: XSS分类 XSS平台--漏洞利用 总结 答疑 XSS注入原理 XSS 攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, ...

  5. 拿到一个网站,怎么判断该网站是否存在sql注入漏洞?

    漏洞挖掘 漏洞利用 修复漏洞 sql注入漏洞.文件操作漏洞.xss.rce.逻辑漏洞 反序列化.... sql注入漏洞: 网站的数据库 脱裤 拖取网站数据库 数据库基础: 数据库基本结构:数据库 -- ...

  6. XSS注入基础入门篇

    XSS注入基础入门篇 1.XSS基础概念 2. XSS的分类以及示例 2.1 反射型XSS 2.1.1 示例1:dvwa low 级别的反射型XSS 2.1.2 攻击流程 2.2 DOM型XSS 2. ...

  7. WEB漏洞测试——HTML注入及XSS注入

    HTML注入 原理 目前我们所接触展示页面基本上都是由html来实现的,那么后台在处理内容的时候,是对html很少处理的,如果用户刻意通过输入框.文本框.查询框来填写html.js代码(脚本注入),那 ...

  8. XSS注入(1)-两个简单测试理解反射型xss注入和存储型xss注入

    XSS注入(1)-两个例子理解反射型xss注入和存储型xss注入 XSS全称 Cross Site Script,为使与css语言重名,所以我们将其称为xss跨站脚本攻击.它指的是恶意攻击者往Web页 ...

  9. XSS注入原理以及一些绕过姿势

    介绍 XSS--跨站脚本攻击.通过这个攻击手段,攻击者可以将恶意的 JavaScript 代码插入存在 XSS 漏洞的 Web 页面中,当用户浏览带有恶意代码的页面时,这些恶意代码会被触发,从而达到攻 ...

最新文章

  1. DetachedCriteria 分页Projection取消聚合条件
  2. web.config中httpRunTime的属性(转)
  3. 苹果电脑通过密钥对的方式登录linux系统
  4. mysql数据库崩_mysql数据库崩溃_MySQL
  5. 一个从华为离职的朋友
  6. 故宫也在拼多多卖货!故宫文具将入驻拼多多开设旗舰店!
  7. CleanCodeHandbook Chapter 6: Misc(35-38)
  8. c语言中ftell函数是什么
  9. 最短路径spfa算法
  10. python游戏项目练习——逃出生天(2)
  11. C#-ShowWindow
  12. weak的创建与释放
  13. 时序分析 45 -- 时序数据转为空间数据 (四) 格拉姆角场 python 实践 (下)
  14. 20200909 Vedio Game 游戏平台数据分析
  15. 介绍大家一个很好玩的网站。多人在线flash联机游戏。
  16. Spring学习笔记(下)
  17. 产学交流 | 重庆理工大学计算机科学与工程学院一行到访芝诺数据
  18. IT运维大咖带你玩转企业信息运维自动化
  19. 【机器视觉】移动机器人控制软件的设计与实现
  20. codeblocks 注释取消红色下划线

热门文章

  1. centos php gd库,Centos 编译安装GD库
  2. 助力汽车行业服务转型,Ivanti构建沉浸式IT体验
  3. 数据分析中非常实用的自编函数和代码模块整理
  4. HowtoBecomeAhacker[转]
  5. Ubuntu系统安装ifort编译器
  6. mysql merge 语句_Mysql merge引擎介绍
  7. php cms使用视频教程下载地址,phpcms如何添加视频_CMS系统建站教程,phpcms
  8. Oracle授权语句
  9. 秒懂Java多态的引用类型转换——向上转型、向下转型(强制转型)
  10. 从远程仓库拉取到本地仓库