邓良驹 编写更安全的Python代码编写安全的Python代码 邓良驹 2019.10.19 思考题 if user.balance >= product.price: user.balance -= product.price ? 目录 CONTENTS 常见不安全代码 代码检查的工具 总结:如何规避风险 常见不安全代码 小心 eval 应对: 在生产环境中,任何情况下都不要使用eval。 import sys 可改用raw_input。 小心类型溢出 应对: 使用较新版本的Python3,而不使用发行版OS自带的旧版Python。 捕获并处理溢出错误,可以减少风险。在重要的位置做好防御式 编程,检查好入参的类型与合法的上下限。 >>> range(100**100) Traceback (most recent call last): File "", line 1, in "__main__": shellcode = pickle.dumps(ShellExp()) pickle.loads(shellcode) 应对: 绝不对不可信/未认证数据进行unpickle,使用更安全的JSON 或YAML做序列化。必须使用pickle时在沙盒环境执行。 小心 PyYAML 应对: 使用yaml.safe_load,必要时编写自定义 Loader 做更严格的检查。 对不可信来源的序列化检查后操作。 0 码力 | 18 页 | 988.40 KB | 1 年前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 54 -> 0.59 3.14 -> 0.93 2.00 -> 0.03 2.60 -> 0.96 如果还有时间,我们用静态类型 来写一个简单的网页生成框架 一个用起来,没有学习曲线的框架。 很安全,因为没有程序员需要付出心 智负担的工作。 THANK YOU thautwarm: - github.com/thautwarm - twshere@outlook.com0 码力 | 43 页 | 10.71 MB | 1 年前3
Flask入门教程时,你也可以使用 --user 选项进行用户安装(即 pip install --user pipenv )。用户安装可以避免破坏全局的包,而且可以避 免对不可信的包使用 sudo pip 导致的潜在安全问题。详情见 Pipenv 文档安装 章节。 第 1 章:准备工作 13 第 2 章:Hello, Flask! 追溯到最初,Flask 诞生于 Armin Ronacher 在 2010 和我们前面编写的视图函数相比,这个函数返回了状态码作为第二个参数,普 通的视图函数之所以不用写出状态码,是因为默认会使用 200 状态码,表示成功。 这个视图返回渲染好的错误模板,因为模板中使用了 user 变量,这里也要一并传 入。现在访问一个不存在的 URL,会显示我们自定义的错误页面: 编写完这部分代码后,你会发现两个问题: 错误页面和主页都需要使用 user 变量,所以在对应的处理函数里都要查询数 据库并传入 user type="submit" name="submit" value="Add"> 在这两个输入字段中, autocomplete 属性设为 off 来关闭自动完成(按下输 入框不显示历史输入记录);另外还添加了 required 标志属性,如果用户没有 输入内容就按下了提交按钮,浏览器会显示错误提示。 两个输入框和提交按钮相关的 CSS 定义如下: 第 7 章:表单0 码力 | 127 页 | 7.62 MB | 1 年前3
Python 标准库参考指南 3.8.20 Mac OS X .plist 文件 . . . . . . . . . . . . . . . . . . . . . . . 496 15 加密服务 499 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 15.2 hmac --- 基于密钥的消息验证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 16 通用操作系统服务 513 16.1 os --- 多种操作系统接口 函数支持动态执行语句。globals() 和locals() 函数各自返回当前的全局和本 地字典,因此您可以将它们传递给eval() 或exec() 来使用。 另外可以参阅ast.literal_eval(),该函数可以安全执行仅包含文字的表达式字符串。 引发一个审计事件 exec 附带参数 code_object。 exec(object[, globals[, locals]]) 这个函数支持动态执行 Python0 码力 | 1927 页 | 9.69 MB | 9 月前3
Python 标准库参考指南 3.8.20 Mac OS X .plist 文件 . . . . . . . . . . . . . . . . . . . . . . . 496 15 加密服务 499 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 15.2 hmac --- 基于密钥的消息验证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 16 通用操作系统服务 513 16.1 os --- 多种操作系统接口 函数支持动态执行语句。globals() 和locals() 函数各自返回当前的全局和本 地字典,因此您可以将它们传递给eval() 或exec() 来使用。 另外可以参阅ast.literal_eval(),该函数可以安全执行仅包含文字的表达式字符串。 引发一个审计事件 exec 附带参数 code_object。 exec(object[, globals[, locals]]) 这个函数支持动态执行 Python0 码力 | 1927 页 | 9.69 MB | 9 月前3
Python 标准库参考指南 3.8.20 OS X .plist 文件 . . . . . . . . . . . . . . . . . . . . . . . . . 532 15 加密服务 535 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535 15.2 hmac --- 基于密钥的消息验证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 16 通用操作系统服务 551 16.1 os --- 多种操作系统接口 函数支持动态执行语句。globals() 和locals() 函数各自返回当前的全局和本地字 典,因此您可以将它们传递给eval() 或exec() 来使用。 另外可以参阅ast.literal_eval(),该函数可以安全执行仅包含文字的表达式字符串。 引发一个审计事件 exec 附带参数 code_object。 exec(object[, globals[, locals]]) 这个函数支持动态执行 Python0 码力 | 2052 页 | 9.74 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 15 加密服务 531 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 15.1.1 哈希算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 15.3.1 随机数 . . . . . . . . . . . . LoggerAdapter 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 16.6.9 线程安全 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 16.6.10 模块级函数0 码力 | 2072 页 | 10.39 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 vii 15 加密服务 569 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 15.1.1 哈希算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 15.3.1 随机数 . . . . . . . . . . LoggerAdapter 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 16.6.9 线程安全 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706 16.6.100 码力 | 2207 页 | 10.45 MB | 9 月前3
Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 vii 15 加密服务 553 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553 15.1.1 哈希算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 15.3.1 随机数 . . . . . . . . . . LoggerAdapter 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 16.6.9 线程安全 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684 16.6.100 码力 | 2146 页 | 10.17 MB | 9 月前3
Python 标准库参考指南 3.9.20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 15 加密服务 517 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 15.1.1 哈希算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527 15.3 secrets --- 生成管理密码的安全随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 15.3.1 随机数 . . . . . . . . . . . . LoggerAdapter 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 16.6.9 线程安全 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 16.6.10 模块级函数0 码力 | 2015 页 | 10.12 MB | 9 月前3
共 121 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13













