Python的六大误解

时间:2017-06-15 17:37

  Python作为一门特别的语言,在eBay和PayPal有很长的历史。而且其流行程度依然有增不减。

  

  eBay的开发者支持Python这个应用于基层领域多年的语言。甚至在eBay管理层官方支持Python以前,技术人员就开始使用Python。我在几年前加入PayPal并选择Python来写内部应用,然而,我却发现了PayPal中将近15年以前的Python代码。

  目前,Python 支撑着 超过50个项目, 包括:

  1. 功能和产品型, 例如 eBay NowRedLaser

  2. 运营和基础设施型, 从开放的 OpenStack到专有设施

  3. 中间层服务和应用型,例如 PayPal用来设定价格以及检测用户可用功能的那个(服务/应用)

  4. 监测代理和接口型, 用于涉及到部署和安全的一些用例

  5. 批处理任务型, 例如数据导入,价格调整,及其它项目

  6. 以及不计其数的开发者工具

  在接下来的文章里将详细介绍那些使得eBay 和 PayPal 的 Python 生态系统从2011年的不超过25个工程师到2014年超过260个工程师所使用的技术和举措。对于本文,则会专注于6个不得不予以揭露的关于 eBay 和 PayPal 的企业环境的误解。

  误解1: Python 是一门新语言

  子是伴随着所有的初创公司正在使用它以及孩子们最近也在学习它的事实,这个误解为何仍然存在是可以理解的。实际上Python 已经 超过23岁了, 它最初发布于1991年, 早于 HTTP 1.0协议5年且早于 Java 4年. 目前比较有著名的很早就使用 Python 的例在1996年: Google 的第一个成功的网络爬虫.

  如果你对于长长的Python 历史比较好奇,Python 的作者 Guido van Rossum已经为你准备好整个故事了.

  误解2: Python 没有被编译

  不像C++ 一样需要一个独立的编译器工具链,Python 实际上被编译成了字节码,和 Java 或者许多其他的编译型语言十分相似。更进一步的编译过程,如果有的话, 取决于运行时环境, 不管是 CPython,PyPy,Jython/JVM,IronPython/CLR,或是其它的进程式虚拟机(process virtual machine)。参考 误解#6来了解更多。

  一条在PayPal 以及其它地方的通用原则就是,(应用的)安全性不能依赖于代码的已编译状态。更为重要的是加强运行时环境的安全,因为实质上每种语言都有一个解码器,或者能被拦截并导出受保护的状态。参考下一条谬误来了解更多的 Python 安全性问题。

  误解3:Python 不安全

  轻量级Python 的亲和力可能使他看起来不怎么可怕,但是这里直觉很大程度上是受到了误导的. 安全的一个核心原则就是尽可能让呈现的目标更小. 大系统是违背安全原则的,因为他们趋向于 使行为过渡集中化, 并且也 让开发者难于理解. Python 通过倡导简洁化来边缘化这些恶心的问题. 更有甚者, CPython通过让自己成为一个简单、稳定并且易于审核的虚拟机来使这些问题得到解决. 事实上,近期 CoveritySoftware 的一个分析结果显示CPython 得到了他们的最高质量评级.

  Python 还拥有一系列可扩展的开源、产业标准化的安全库序列. 在PayPal, 我们把安全和授信看做是重中之重, 我们发现 hashlib, PyCrypto, 以及 OpenSSL, 通过 PyOpenSSL和我们自己的定制构建的结合,涵盖了 PayPal 多样化的安全和性能需求.

  这些诸多的原因,使得Python 成为PayPal(和eBay)的应用程序安全团队在某些业务中最快的选择. 这里有把Python用在PayPal的安全第一环境中的几个以安全为基础应用程序:

  1. 创建安全代理,以促进密钥的轮换以并巩固加密实现

  2. 同业界领先的 HSM技术集成

  3. 为缺乏兼容性的技术栈构建受TLS保护的封装代理

  4. 为我们内部的互相认证计划生成键和证书

  5. 开发主动的漏洞扫描器