当前位置: 首页 > article >正文

flask中安全策略简要说明

问题:针对服务安全基础策略

策略一、接口入参长度限制

策略二、接口入参不接收特殊字符

解决方案:
一、flask对象实例化后,提供有config配置

app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024  # 设置为16MB

 二、flask有提供参数校验前的函数,可以以装饰器的方式调用实现接收参数前的处理

from flask import Flask, request, jsonify
 
app = Flask(__name__)
 
# 定义一个函数来校验参数中是否包含特殊字符
def validate_parameters(params):
    for key, value in params.items():
        if not isinstance(value, str):
            continue
        if any(char in value for char in ['<', '>', '&', '"', "'", ';', '\\']):
            return False
    return True
 
@app.before_request
def before_request():
    if request.method in ['POST', 'PUT']:
        if 'application/json' in request.headers.get('Content-Type', ''):
            params = request.get_json()
        else:
            params = request.form
        if not validate_parameters(params):
            return jsonify({'error': 'Parameters contain special characters'}), 400
 
@app.route('/your-endpoint', methods=['POST'])
def your_endpoint():
    # 这里可以安全地使用参数,因为它们已经被校验过不包含特殊字符
    data = request.get_json() if request.is_json else request.form
    # 处理你的逻辑...
    return jsonify({'message': 'Success'}), 200
 
if __name__ == '__main__':
    app.run(debug=True)

小结:提供前置函数,这个思想非常值得学习。本来还在考虑,按正常操作,会需要给每一个路由都添加指定的方法来实现逻辑筛选,这种常规思维的方式会让工作量变的很大。做许多没有意义的事情。后续这个思想会需要继续进行深化


http://www.kler.cn/a/305273.html

相关文章:

  • Jetpack 之 Ink API初探
  • Vue 的生命周期函数 和 Vuex
  • 假期增设:福祉与负担并存,寻求生活经济平衡之道
  • 智能电视/盒子的应用管理——通过ADB工具优化体验
  • 冗余连接2 hard题 代随C#写法
  • idea 解决缓存损坏问题
  • 景联文科技:专业扫地机器人数据采集标注服务
  • C/C++动态库函数导出 windows
  • Python数据分析 Pandas库-初步认识
  • Spring Boot-版本兼容性问题
  • 用 SQL 写的俄罗斯方块游戏「GitHub 热点速览」
  • Nginx:高性能的Web服务器与反向代理
  • 矩阵直播换IP:如何使用代理IP提升直播效果
  • java enum code-label模式的使用方法
  • MATLAB算法实战应用案例精讲-【人工智能】数据血缘分析(概念篇)
  • 计算机视觉学习路线(纯纯小白)
  • idea开发Java程序的步骤及设置
  • Typescript 的类型断言
  • 召回02 Swing 召回通道
  • C#命令行参数解析库System.CommandLine介绍
  • 分享一些智慧农业数据集
  • springboot医院预约挂号系统 ---附源码73444
  • 【计算机网络 - 基础问题】每日 3 题(六)
  • leetcode01——27. 移除元素(双指针)、977. 有序数组的平方(双指针)、209. 长度最小的子数组(双指针/滑动窗口)
  • 准备好启程了:Nuro将授权其自动驾驶系统
  • 北斗盒子:海上安全的智能守护者——落水报警应用案例