杭州PyconChina2019

来呀~

欢迎关注我的公众号「测试游记」

大会日程

640?wx_fmt=jpeg

现场

640?wx_fmt=jpeg

只因写了一段爬虫,公司 200 多人被抓!

编写更安全的 Python 代码

站在开发者的角度,在工作中大家最关注的是业务功能是否实现,业务逻辑是否正确,高级别的一些同学的会关注可扩展性等架构层面的问题。然而,大家都有共同特点:在完成工作(编写代码)时,几乎都是正向思维,会假定用户是按产品设计的流程操作的。

例如写用户余额减扣的代码,也只会写 if user.balance >= product.price, 紧接着一句 user.balance -= product.price。实际上这样的语句存在很大的安全隐患。

应用开发者们一般很少去思考自己所编写的代码可能存在的瑕疵和安全漏洞,就算其中有部分同学具有较强的安全意识,对如何编写安全的代码也只是停留在:内存访问别越界,别用eval函数,入参要做非法字符校验。

本演讲主题将分享给大家的是,在利用 Python 编写程序的过程中,有哪些不经意的“正常写法”可能存在安全隐患以及改进做法,使代码变得更安全,并介绍两个用于 Python 代码审查的工具。

  • 小心 eval

import sys	
def run(s):	
  try:	
    v=eval(s)	
   except Exception as e:	
    print(e)	
 if __name__ == "__main__":	
  run(sys.argv[1])
$ python test eval.py "__import__("os").system('/bin/sh')"	
$ python test eval.py "print(globals())"
  • 小心 input()

python3中输入变量直接执行的问题已经被修复

  • 小心 类型溢出

# python2	
$ range(100**100)	
OverflowError: range() result has too many items	
$ xrange(100**100)	
OverflowError: Python int too large to convert to C long

在python3中已经可以正确的处理

  • 小心 assert

可以通过 -o 被跳过

  • 小心 pickle

反序列化后直接进行运行了可调用部分「可能包含恶意代码 __reduce__

  • 小心 PyYAML

import yaml	
class ShellExp:	
  def __init__(self,args):	
    import os	
    os.system(args)	
if __name__ == '__mian__':	
    payload= "!!python/object/apply:__main__.ShellExp('/bin/sh')" 	
    ymal.load(payload)

!!在yml中表示强制类型转换

  • 小心 服务端模版注入(SSTI)

url中写入 {{xxx}}导致模版注入

不要在模版中使用 %s直接使用 {{var}}

  • 小心 注入攻击

  • SQL注入

  • NoSQL注入

程序在接受输入的时候,其可能来自一个攻击者,背后就可能产生注入的风险。

  • 小心PyPI依赖包

Bandit:检查安全问题的攻击的工具

Homebot

通过Python和Telegram搭建一个家用机器人,并介绍一些相关的功能和生态环境

Python3的新特性和改进

随着Python2.x的停止维护时间(2020年1月1日)越来越近,各大流行Python包(Flask,Django,Ipython)也终止了Python2版本的支持。遗留项目切换到Python3的计划也要提上日程。本次主题演讲主要介绍Python3各个版本的新特性,改进,背后的原因,和从Python2代码迁移过来时需要注意的点。

  • 2008年11月发布python3

  • 2009年6月发布python3.1

collections.OrderedDict

collections.Counter

  • 2011年2月发布python3.2

concurrent.futers

  • 2012年9月发布python3.3

yield from

unittest.mock

  • 2014年3月发布python3.4

asyncio

pathlib:面向对象的处理文件路径的库

  • 2015年9月python3.5

async

await

type hints:静态类型检查

  • 2016年11月python3.6

fstring

f"{var}"
  • 2018年6月 python3.7

dataclasses

breakpoint

  • 2019年10月14日 python3.8

:= 海象赋值

640?wx_fmt=jpeg

人人都爱 DataFrame:Pandas 到 Mars 的进阶之路

Pandas 作为最受数据科学家欢迎的分析库,提供了超多的接口来进行数据处理和分析。然而,在很多具体任务过程中,会遇到性能不尽如人意,但又不知如何优化的情况。本次演讲会介绍 Pandas 的常见优化策略,以及 Pandas 背后的实现原理。最后在常见优化手段都不起作用时,可以使用 Mars DataFrame 来并行和分布式加速计算。

通过各种方式实现从计算各省到杭州的距离的demo

分别比较下面几种方式的速度与资源的消耗

  • 以数据为单位

  • 以行为单位

  • 以列为单位

最终引出分布式计算的 Mars封装

Mars:分而治之 https://github.com/mars-project/mars

用于Linux内核调试的Python

1) BCC(BPF Compiler Collection, 利用扩展的伯克利包过滤器 eBPF 来高效地跟踪内

核和操作应用程序的工具箱)的 Python 前端解析

2) 深入分析 LISA(Linux Integrated System Analysis, 基于 Python 的 Linux 内核交互

式分析和自动化测试利器)项目

3) 脚本化内核调试器 drgn 简介

4) 在开源 ARM 平台(如树莓派4等)上实践 BCC 和 drgn,以及 LISA 项目的扩展设计

议题涉及的主要技术链接:

https://en.wikipedia.org/wiki/BerkeleyPacketFilter

https://github.com/iovisor/bcc

https://github.com/ARM-software/lisa

https://github.com/osandov/drgn

https://www.raspberrypi.org/products/raspberry-pi-4-model-b/

Python的语法和语义扩展系统

Moshmosh:https://github.com/thautwarm/moshmosh

提供语法和语义的语言 不仅仅是工具 还是思维方式

细说不是胡说,语言不是工具

语言决定思维模型

不同语言实现输出质数有不同的算法

第一门编程语言会决定思维的方式

闪电演讲

这次闪电演讲从上海的5分钟提升到了10分钟,大家明显都有点时间过多的感觉。

没有赶人下去的热闹场景了。

推荐的VScode插件

Project Manager

Git Graph

Line Share

Remote Development

如何做一个体面的程序员

https://gitpitch.com/laixintao/side-project-slide

  • 开发你自己会用到的东西

https://clock.sh/

  • 保持程序可以运行

用PR追踪自己的工作;

尽早的将原型打包上传到 Pypi,方便别人尝试你的项目(推荐Poetry);

将一些计划或者想法赶紧用 issue 记录下来;

骄傲的发布有关自己的项目的动态;

  • 阅读别人的源码

  • 写好测试和自动化

测试实际上是在节省时间; 无聊的工作只做一次.

  • 集中精力

不要刷测试覆盖率,不要纠结

  • Archive项目,Transfer

Asyncio在云服务自动化测试中的应用

痛点

  • 各产品测试框架自成一套

  • 执行效率低,云资源浪费严重

  • 用例编写复杂

  • 可靠性较低

设计目标

  • 通用性

  • 高效性:提升执行效率,减少资源消耗

  • 易用性:只关注关注点,易于编写与维护

  • 可靠性:误报率低

高效性

  • 使用异步Asyncio

  • 资源池

易用性

  • 面向对象

  • 模版化用例

可靠性

  • 框架可靠性

  • 资源可靠性

感受

这次大会的质量 感觉没有达到来之前的预期。

不和今年的上海站比较,就说和去年的杭州站来比,几个演讲明显很随意,没有准备的感觉非常明显。

不过这个东西真的是众口难调,当讲一些对我耳熟能详的东西的时候,我会饶有兴趣的在心里评点一番。

但是讲到一些完全没有接触过的东西的时候,我就会产生不想听的抵触心理。

使用python一年多了,由对爬虫感兴趣接触,到实际从事自动化测试工作,再到学习各种Web框架。

她真的是非常有意思的一门语言,她已经三十岁了,但是她还是充满活力的活跃在各个领域,离不开一群热爱她的小伙伴,大家都在用自己的能力来使她变得更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值