【安全开发】python安全编码规范
申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%84%E8%8C%83%E6%96%87%E6%A1%A3/2018-08-17-SDL-4-python%E5%AE%89%E5%85%A8%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83.md
python语言安全
本身要注意的有,一些危险函数,危险模块的调用,主要是系统调用。这个如果调用一定要对输入输出做好过滤,以下是代码中各种导致进行系统调用的方式。尽量避免。
避免各种情况导致系统调用
谨慎使用Eval
数据序列化
Web编程
对应Web编程中安全概念在python web框架中的实现。url跳转,目录遍历,任意文件读取也需要考虑在内。针对不同的框架也需要。
Flask 安全
- 使用Flask-Security
- 直接生成 HTML 而不通过使用Jinja2
- 不要在用户提交的数据上调用Markup
- 使用 Content-Disposition: attachment 标头去避免上传html文件
- 防止CSRF,flask本身没有实现该功能
Django 安全
可参考phithon的博客,有较多相关资料。
- 关闭DEBUG模式
- 关闭swagger调试
- 妥善保存SECRET_KEY
- 使用SecurityMiddleware
- 设置SECURE_HSTS_SECONDS开启HSTS头,强制HTTPS访问
- 设置SECURE_CONTENT_TYPE_NOSNIFF输出nosniff头,防止类型混淆类漏洞
- 设置SECURE_BROWSER_XSS_FILTER输出x-xss-protection头,让浏览器强制开启XSS过滤
- 设置SECURE_SSL_REDIRECT让HTTP的请求强制跳转到HTTPS
- 设置SESSION_COOKIE_SECURE使Cookie为Secure,不允许在HTTP中传输
- 设置CSRF_COOKIE_SECURE使CSRF Token Cookie设置为Secure,不允许在HTTP中传输
- 设置CSRF_COOKIE_HTTPONLY为HTTP ONLY
- 设置X_FRAME_OPTIONS返回X-FRAME-OPTIONS: DENY头,以防止被其他页面作为框架加载导致ClickJacking
- 部署前运行安全性检测 django-admin.py checksecure --settings=production_settings
审计工具
安装使用方式较为简单,所以不做介绍。
引用
- 从Pwnhub诞生聊Django安全编码
- Python安全编码与代码审计
- Django Secure
- Flask安全注意事项
- Python安全和代码审计相关资料
- Flask debu pin 安全问题
- Python沙箱逃逸的n种姿势
- Escaping python sanbox
- Pickle Security
- Security Guide for developers
【安全开发】python安全编码规范的更多相关文章
- Python代码编码规范
目录 1. Introduction 介绍 2. A Foolish Consistency is the Hobgoblin of Little Minds 尽信书,则不如无书 3. Code la ...
- 【翻译】Python PEP8编码规范(中文版)
原文链接:http://legacy.python.org/dev/peps/pep-0008/ item detail PEP 8 Title Style Guide for Python Code ...
- sublime2开发Python的编码问题
在sublime2文本编辑器直接开发python程序会出现错误 Traceback (most recent call last): File ".\sublime_plugin.py&qu ...
- Python的编码规范(PEP 8 & Google Python guide)
PEP 8 Python 代码规范整理 click here Goole Python 风格指南 中文版 click here 大家有取舍的看吧. 因为文章不是原创的,所以只贴地址,给大家造成麻烦了, ...
- 【python】编码规范(转载)
转自:http://www.cnblogs.com/itech/archive/2012/01/06/2314454.html 1 编码 >>所有的 Python 脚本文件都应在文件头标上 ...
- [python]pep8编码规范
一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在操作符的后边敲回车.3 类 ...
- Python PEP8 编码规范中文版
原文链接:https://legacy.python.org/dev/peps/pep-0008/ 参考:https://blog.csdn.net/ratsniper/article/details ...
- Python 常用编码规范
一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...
- Python PEP8 编码规范
代码编排 缩进.缩进4个空格,不能混合使用Tab和空格. 每行最大长度79,文档字符串和注释行最大长度为72,换行可以使用反斜杠,最好使用圆括号. 类和顶层函数定义之间空两行:类中的方法定义以单行分隔 ...
随机推荐
- Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No such file or directory解决方法
http://www.phperz.com/article/14/1219/42002.html ——————————————————————————————————————————————————
- CSS弹出背景半透明窗口
<script type="text/javascript" src="<ww:url value='/js/jquery-1.8.3.min.js'/> ...
- Linux epoll版定时器
#ifndef __MYTIMER_H_ #define __MYTIMER_H_ /*************** 高并发场景下的定时器 *****************/ //定时器回调函数 t ...
- 【转】【Python】Python发送邮件(常见四种邮件内容)
在写脚本时,放到后台运行,想知道执行情况,会通过邮件.SMS(短信).飞信.微信等方式通知管理员,用的最多的是邮件.在linux下,Shell脚本发送邮件告警是件很简单的事,有现成的邮件服务软件或者调 ...
- vi 新建文件后保存文件时遇到的问题:E212: 无法打开并写入文件
问题描述 使用vi编辑器写好内容后保存并退出时遇到以下问题 解决方案 该问题的原因是用户权限不够,因为普通用户用 vi 不能保存文件,需要使用超级用户才可以. 先转换为超级用户:su 再用vi打开文件 ...
- 3ds Max 中的导航控件ViewCube入门介绍
介绍 ViewCube 3D导航控件提供当前方向的视觉反馈,让用户可以调整视图方向以及在标准视图与等距视图间进行切换. 软件环境:3d Max2015 第一步.启动3d Max软件,打开场景文件 Vi ...
- mvn archetype:generate 创建Maven项目
mvn archetype:generate 创建Maven项目 mvn compile 编译源代码 mvn deploy 发布项目 mvn test-compile 编译测试源代码 mvn test ...
- (转)关于linux挂载window下共享文件
关于linux挂载window下共享文件的方法: ①事先建立linux下文件夹,例如“ /mnt/linux-folder”②用mount命令挂载 mount -o username=windo ...
- 使用VS2017新建的Web项目报错:Package Microsoft.Composition 1.0.27 is not compatible with netcoreapp1.1
使用VS2017新建的Web项目报错: 看到这样的错误提示,毫无意义.赶脚这应该是VS2017的BUG,没有显示错误的位置.于是用dotnet restore手动还原,结果在控制台中终于显示了详细的错 ...
- C# Image与Base64编码互转函数
public Bitmap GetImageFromBase64(string base64string) { byte[] b = Convert.FromBase64String(base64st ...