邓良驹 编写更安全的Python代码编写安全的Python代码 邓良驹 2019.10.19 思考题 if user.balance >= product.price: user.balance -= product.price ? 目录 CONTENTS 常见不安全代码 代码检查的工具 总结:如何规避风险 常见不安全代码 小心 eval 应对: 在生产环境中,任何情况下都不要使用eval。 import sys 绝不对不可信/未认证数据进行unpickle,使用更安全的JSON 或YAML做序列化。必须使用pickle时在沙盒环境执行。 小心 PyYAML 应对: 使用yaml.safe_load,必要时编写自定义 Loader 做更严格的检查。 对不可信来源的序列化检查后操作。 import yaml class ShellExp: def __init__(self, args): import0 码力 | 18 页 | 988.40 KB | 1 年前3
WeRoBot 1.4.0 微信公众号开发框架文档索引 模块 | 下一页 | WeRoBot 1.4.0 文档 » WeRoBot WeRoBot 是一个微信公众号开发框架。 入门 Hello World 消息处理 使用 Session 记录用户状态 创建自定义菜单 消息加解密 部署 在独立服务器上部署 在SAE上部署 Handler 类型过滤 robot.key_click —— 回应自定义菜单 robot.filter —— 回应有指定文本的消息 Version 0.3.1 Version 0.3.0 © 版权所有 2016, whtsky. 由 Sphinx 1.4.5 创建。 索引 模块 | 下一页 | 上一页 | WeRoBot 1.4.0 文档 » 入门 Hello World 最简单的Hello World, 会给收到的每一条信息回复 Hello World import werobot robot = werobot.WeR Hello World 中, 我们编写的 @robot.handler def hello(message): return 'Hello World!' 就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消 息( 包括 Message 和 Event ) 都转交给这个 Handler 来处理。 当然, 你也可 以编写一些只能处理特定消息的 Handler0 码力 | 82 页 | 88.39 KB | 1 年前3
WeRoBot 1.6.0 微信公众号开发框架文档索引 模块 | 下一页 | WeRoBot 1.6.0 文档 » WeRoBot WeRoBot 是一个微信公众号开发框架。 入门 Hello World 消息处理 使用 Session 记录用户状态 创建自定义菜单 消息加解密 部署 在独立服务器上部署 在SAE上部署 Handler 类型过滤 robot.key_click —— 回应自定义菜单 robot.filter —— 回应有指定文本的消息 Version 0.3.1 Version 0.3.0 © 版权所有 2016, whtsky. 由 Sphinx 1.4.5 创建。 索引 模块 | 下一页 | 上一页 | WeRoBot 1.6.0 文档 » 入门 Hello World 最简单的Hello World, 会给收到的每一条信息回复 Hello World import werobot robot = werobot.WeR Hello World 中, 我们编写的 @robot.handler def hello(message): return 'Hello World!' 就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消 息( 包括 Message 和 Event ) 都转交给这个 Handler 来处理。 当然, 你也可 以编写一些只能处理特定消息的 Handler0 码力 | 85 页 | 89.26 KB | 1 年前3
WeRoBot 1.5.0 微信公众号开发框架文档索引 模块 | 下一页 | WeRoBot 1.5.0 文档 » WeRoBot WeRoBot 是一个微信公众号开发框架。 入门 Hello World 消息处理 使用 Session 记录用户状态 创建自定义菜单 消息加解密 部署 在独立服务器上部署 在SAE上部署 Handler 类型过滤 robot.key_click —— 回应自定义菜单 robot.filter —— 回应有指定文本的消息 Version 0.3.1 Version 0.3.0 © 版权所有 2016, whtsky. 由 Sphinx 1.4.5 创建。 索引 模块 | 下一页 | 上一页 | WeRoBot 1.5.0 文档 » 入门 Hello World 最简单的Hello World, 会给收到的每一条信息回复 Hello World import werobot robot = werobot.WeR Hello World 中, 我们编写的 @robot.handler def hello(message): return 'Hello World!' 就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消 息( 包括 Message 和 Event ) 都转交给这个 Handler 来处理。 当然, 你也可 以编写一些只能处理特定消息的 Handler0 码力 | 83 页 | 88.85 KB | 1 年前3
WeRoBot 1.10.0 微信公众号开发框架文档Hello World 中, 我们编写的 @robot.handler def hello(message): return 'Hello World!' 就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消 息( 包括 Message 和 Event ) 都转交给这个 Handler 来处理。 当然, 你也可 以编写一些只能处理特定消息的 Handler session['first'] = True return '你之前没给我发过消息' Session 功能默认开启, 并使用 SQLite 存储 Session 数据。 详情请参考 Session 文档 创建自定义菜单 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。 werobot.client.Client 封装了微信的部分 API 接口,我们可以使用 werobot 里面写 import sae from robot import robot application = sae.create_wsgi_app(robot.wsgi) 然后按照 SAE 的要求编写好 config.yaml 文件就可以了。 可以参考 示例仓库 [https://github.com/whtsky/WeRoBot-SAE-demo] 如果你希望使用 SAE 提供的 KVDB0 码力 | 101 页 | 73.89 KB | 1 年前3
WeRoBot 1.6.0 微信公众号开发框架文档Hello World 中, 我们编写的 @robot.handler def hello(message): return 'Hello World!' 就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消 息( 包括 Message 和 Event ) 都转交给这个 Handler 来处理。 当然, 你也可 以编写一些只能处理特定消息的 Handler session['first'] = True return '你之前没给我发过消息' Session 功能默认开启, 并使用 SQLite 存储 Session 数据。 详情请参考 Session 文档 创建自定义菜单 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。 werobot.client.Client 封装了微信的部分 API 接口,我们可以使用 werobot 里面写 import sae from robot import robot application = sae.create_wsgi_app(robot.wsgi) 然后按照 SAE 的要求编写好 config.yaml 文件就可以了。 可以参考 示例仓库 [https://github.com/whtsky/WeRoBot-SAE-demo] 如果你希望使用 SAE 提供的 KVDB0 码力 | 94 页 | 74.98 KB | 1 年前3
WeRoBot 1.12.0 微信公众号开发框架文档Hello World 中, 我们编写的 @robot.handler def hello(message): return 'Hello World!' 就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消 息( 包括 Message 和 Event ) 都转交给这个 Handler 来处理。 当然, 你也可 以编写一些只能处理特定消息的 Handler session['first'] = True return '你之前没给我发过消息' Session 功能默认开启, 并使用 SQLite 存储 Session 数据。 详情请参考 Session 文档 创建自定义菜单 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。 werobot.client.Client 封装了微信的部分 API 接口,我们可以使用 werobot 里面写 import sae from robot import robot application = sae.create_wsgi_app(robot.wsgi) 然后按照 SAE 的要求编写好 config.yaml 文件就可以了。 可以参考 示例仓库 [https://github.com/whtsky/WeRoBot-SAE-demo] 如果你希望使用 SAE 提供的 KVDB0 码力 | 103 页 | 74.49 KB | 1 年前3
WeRoBot 0.2.0 微信公众号开发框架文档0 码力 | 8 页 | 32.83 KB | 1 年前3
WeRoBot 1.1.0 微信公众号开发框架文档索引 模块 | 下一页 | WeRoBot 1.1.0 文档 » WeRoBot WeRoBot 是一个微信公众号开发框架。 入门 Hello World 消息处理 使用 Session 记录用户状态 创建自定义菜单 消息加解密 部署 在独立服务器上部署 在SAE上部署 Handler 类型过滤 robot.key_click —— 回应自定义菜单 robot.filter —— 回应有指定文本的消息 Version 0.3.1 Version 0.3.0 © 版权所有 2016, whtsky. 由 Sphinx 1.4.5 创建。 索引 模块 | 下一页 | 上一页 | WeRoBot 1.1.0 文档 » 入门 Hello World 最简单的Hello World, 会给收到的每一条信息回复 Hello World import werobot robot = werobot.WeR Hello World 中, 我们编写的 @robot.handler def hello(message): return 'Hello World!' 就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消 息( 包括 Message 和 Event ) 都转交给这个 Handler 来处理。 当然, 你也可 以编写一些只能处理特定消息的 Handler0 码力 | 62 页 | 75.61 KB | 1 年前3
WeRoBot 1.2.0 微信公众号开发框架文档索引 模块 | 下一页 | WeRoBot 1.2.0 文档 » WeRoBot WeRoBot 是一个微信公众号开发框架。 入门 Hello World 消息处理 使用 Session 记录用户状态 创建自定义菜单 消息加解密 部署 在独立服务器上部署 在SAE上部署 Handler 类型过滤 robot.key_click —— 回应自定义菜单 robot.filter —— 回应有指定文本的消息 Version 0.3.1 Version 0.3.0 © 版权所有 2016, whtsky. 由 Sphinx 1.4.5 创建。 索引 模块 | 下一页 | 上一页 | WeRoBot 1.2.0 文档 » 入门 Hello World 最简单的Hello World, 会给收到的每一条信息回复 Hello World import werobot robot = werobot.WeR Hello World 中, 我们编写的 @robot.handler def hello(message): return 'Hello World!' 就是一个简单的 Handler , @robot.handler 意味着 robot 会将所有接收到的消 息( 包括 Message 和 Event ) 都转交给这个 Handler 来处理。 当然, 你也可 以编写一些只能处理特定消息的 Handler0 码力 | 70 页 | 82.33 KB | 1 年前3
共 163 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17













