25、网络对象序列化与字符串处理技术详解

网络对象序列化与字符串处理技术详解

1. 网络对象序列化概述

在处理网络对象序列化时,从未知或不可信源加载 pickle 对象存在风险。因为可以向 pickle 文件中注入任意代码,通过 pickle 恶意攻击计算机。而且,pickle 只能被其他 Python 程序加载,难以与其他语言编写的服务共享。

多年来,有许多格式用于此目的,常见的有:
| 格式 | 简介 |
| ---- | ---- |
| XML(可扩展标记语言) | 过去很流行,尤其受 Java 开发者青睐 |
| YAML(另一种标记语言) | 偶尔会被提及 |
| CSV(逗号分隔值) | 常用于表格数据交换 |

在使用这些格式的库处理不可信数据时,要研究其安全问题。例如,XML 和 YAML 都有一些隐蔽特性,若被恶意使用,可在主机上执行任意命令,且这些特性默认可能未关闭。

JavaScript 对象表示法(JSON)是一种人类可读的原始数据交换格式,它是一种标准格式,可被多种异构客户端系统解释,非常适合在完全解耦的系统之间传输数据。此外,JSON 不支持可执行代码,只能序列化数据,因此更难注入恶意语句。

1.1 JSON 模块的使用

如果用 Python 编写的 Web 应用要将内部数据转换为 JSON 格式,可使用 json 模块。该模块提供了与 pickle 模块类似的接口,有 dump load dumps loa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值