邓良驹 编写更安全的Python代码编写安全的Python代码 邓良驹 2019.10.19 思考题 if user.balance >= product.price: user.balance -= product.price ? 目录 CONTENTS 常见不安全代码 代码检查的工具 总结:如何规避风险 常见不安全代码 小心 eval 应对: 在生产环境中,任何情况下都不要使用eval。 import sys 使用较新版本的Python3。Python2中可改用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 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 在 实 虽然模式匹配似乎还不甚流行,但它仅是编 程语言走向未来必然经过的一个极其不起眼 的、实现简单的基础设施。 语言决定思维模型 在 实 际 业 务 中 处 理 数 据 � Python 语言决定思维模型 语言中的语法和语义, 决定了 它真实的表达力。 大多数语言都不是“万金油” 的,这是客观事实。 但它们不够“万金油”的问题 来源,不一定是不能解决的。 扩展语言,开阔思维 我预期的语法(及语义) get_data返回 .rewrite_ast (self, AST) .post_rewrite_src (self, io) moshmosh/extension.py 简单的解释? 这是一个新语言 • 借用了Python的parser • 提供了一个用户容易扩展的编译器 • 编译到Python • 可以编译成Python字节码文件发布(完全兼容) • 融于Python的生态 Moshmosh:我的Python0 码力 | 43 页 | 10.71 MB | 1 年前3
Hello 算法 1.1.0 Python版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) Release 1.1.0 2024‑04‑15 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 ——邓俊辉,清华大学计算机系教授 “如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通 过编程来实现它们。在此基础上,本书致力于揭示算法在复杂世界中的生动体现,展现算法之美。希望本书 能够帮助到你! i 目 录 第 0 章 前言 1 0.1 关于本书 . . . . . . . .0 码力 | 364 页 | 18.42 MB | 1 年前3
Hello 算法 1.0.0 Python版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) Release 1.0.0 2024‑02‑09 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单、直接且有效。然而刷题就如同玩“扫雷”游戏,自学能力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 第 16 章 附录 348 16.1 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 16.2 一起参与创作 . . 懂,学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Python、C++、Java、C#、Go、Swift、JavaScript、TypeScript、Dart、 Rust、C 和 Zig 等语言。 ‧ 鼓励读者在线上章节评论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 0.1.1 读者对象 若你是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与0 码力 | 362 页 | 17.54 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Python 版Hello 算法 Python 语言版 作者:靳宇栋(@krahets) 代码审阅:靳宇栋(@krahets) Release 1.2.0 2024‑12‑06 序 两年前,我在力扣上分享了“剑指 Offer”系列题解,受到了许多读者的鼓励和支持。在与读者交流期间,我 最常被问的一个问题是“如何入门算法”。逐渐地,我对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法, ——邓俊辉,清华大学计算机系教授 “如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事 羽毛球筒则如同“队列”,一端放入、另一端取出;字典就像一个“哈希表”,能够快速查找目标词条。 本书旨在通过清晰易懂的动画图解和可运行的代码示例,使读者理解算法和数据结构的核心概念,并能够通 过编程来实现它们。在此基础上,本书致力于揭示算法在复杂世界中的生动体现,展现算法之美。希望本书 能够帮助到你! i 目 录 第 0 章 前言 1 0.1 关于本书 . . . . . . . .0 码力 | 364 页 | 18.43 MB | 10 月前3
Hello 算法 1.0.0b5 Python版Hello 算法 Python 语言版 靳宇栋(Krahets) Release 1.0.0b5 2023‑09‑10 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多同学的喜爱和支持。在与读者的交流期间, 最常收到的一个问题是“如何入门学习算法”。我逐渐对这个问题产生了浓厚的兴趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。刷题就如同玩“扫雷”游戏,自学能力强的同 gvenusleo, hpstory, justin‐tse, krahets, nuomi1, Reanon, sjinzh 完 成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代码的规范与统一。 i 目 录 第 0 章 前言 1 0.1 关于本书 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 第 16 章 附录 352 16.1 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 16.2 一起参与创作 . .0 码力 | 361 页 | 30.64 MB | 1 年前3
Hello 算法 1.0.0b4 Python版Hello 算法 Python 语言版 靳宇栋(Krahets) Release 1.0.0b4 2023‑07‑26 序 两年前,我在力扣上分享了《剑指 Offer》系列题解,受到了许多朋友的喜爱与支持。在此期间,我回答了众 多读者的评论问题,其中最常见的一个问题是“如何入门学习算法”。我逐渐也对这个问题产生了浓厚的兴 趣。 两眼一抹黑地刷题似乎是最受欢迎的方法,简单直接且有效。 gvenusleo, hpstory, justin‐tse, krahets, nuomi1, Reanon, sjinzh 完 成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代码的规范与统一。 推荐语 “一本通俗易懂的数据结构与算法入门书,引导读者手脑并用地学习,强烈推荐算法初学者阅读。” ——邓俊辉,清华大学计算机系教授 “如果我当年学数据结构与算法的时候有《Hello . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 16. 附录 321 16.1. 编程环境安装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 16.2. 一起参与创作 .0 码力 | 329 页 | 27.34 MB | 1 年前3
Python3 基础教程 - 廖雪峰......................................................................................... 119 函数式编程 .................................................................................................. ........................................................................................ 157 面向对象编程 .................................................................................................. ...................................................................................... 184 面向对象高级编程 ..................................................................................................0 码力 | 531 页 | 5.15 MB | 1 年前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 8.14.3 枚举成员及其属性的编程访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 8.14.4 重复的枚举成员和值 . . . . . NormalDist 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363 10 函数式编程模块 367 10.1 itertools --- 为高效循环而创建迭代器的函数 . . . . . . . . . . . . . . . . . . . . . . . . . . 367 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 vii 15 加密服务 569 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569 15.1.1 哈希算法 . . .0 码力 | 2207 页 | 10.45 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 8.14.3 枚举成员及其属性的编程访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 8.14.4 重复的枚举成员和值 . . . . . . . 6 NormalDist 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 10 函数式编程模块 343 10.1 itertools --- 为高效循环而创建迭代器的函数 . . . . . . . . . . . . . . . . . . . . . . . . 343 10.1.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 15 加密服务 531 15.1 hashlib --- 安全哈希与消息摘要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 15.1.1 哈希算法 . . . . .0 码力 | 2072 页 | 10.39 MB | 9 月前3
共 162 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17













