【转引】python代码安全指南

危险的函数调用
  • eval,任何时候都不要使用eval,这个函数会到时代码上下文出现不可预期的变化,并且在eval的内容不确定时可能会导致黑客直接通过植入代码控制进程甚至是服务器。如非得使用该函数,推荐使用 ast.literal_eval 来进行操作。
  • exec,execfile, 该statement用于在python中执行了一段代码并控制上下文,并可能导致产生与eval相同的问题。
  • pickle.*, marshal.*(包含pickle和cpickle),pickle相关命令用于对包装当前上下文的一个代码处理逻辑,并序列化成一个字符串。在使用pickle.loads一段pickle序列化后的字符串时,如序列化字符串包含 reduce 魔术方法,则会导致pickle执行reduce中的内容,该序列化内容如被修改,则会导致在反序列化时触发恶意代码的注入。
  • os.system, os.exec* , os.popen* , posix.system, ctypes.CDLL等, 在Python中以下类型的方法均可以调用系统命令(ctypes.CDLL包含的_load_library方法存在命令注入),在使用时,需要对传惨内容进行检查。
危险的处理方式
  • 对于跨语言进行RPC通信时(如查询SQL时),尽量使用ORM后的接口调用,尽可能避免使用原生的查询代码。
    • 举例: sql = ‘select smcolumn from smtable where name="%s"’ % columnquery
      • 当columnquery传入可闭合sql语句时,就可以使得SQL条件跳出当前逻辑,从而执行更多其他类型的数据。如 columnquery='abc" and sleep(1e10000) # 如此即可挂起整个SQL事物,触发异常。
    • 在使用SQL时,请使用预编译绑定方式传入查询参数,一是可以加快sql的查询,二是可以避免大多数危险的突破SQL逻辑的语句产生
    • 同理适用于其他非结构化控制的指令器(bash、mongodb、redis⇒exec)等
    • 也同理适用于操作系统sh命令的执行等
  • 对于正则处理,需要预估传入正则的内容大小以及正则的处理模式,如有大量文本传入正则解析时,会导致CPU飞起来,影响其他协程、事物的处理。
  • 在使用XML解析时候,请关闭外部实体的解析逻辑来防止XXE攻击
  • 对于入参的控制,请使用“检查”而非“过滤”,来避免错误的过滤导致的检查绕过。
运行时安全
  • 请尽可能的使用vitualenv,并指定site-package目录,以避免可能产生的“水坑攻击”。
  • 尽可能的将进程的启动权限压到非root用户,如遇到启动端口等高权方式,请使用setuid将进程降权。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GB/T 7714-2005 是中国国家标准,是关于文献转引文摘规则的标准。该标准适用于各类文献资源的转引文摘工作,涉及到文献的引用、摘录、编排规则等方面。 GB/T 7714-2005 标准主要包括以下几个方面的规定: 1. 文献转引的格式:标准规定了转引文献的参考文献、著录条目等格式,例如书籍、期刊、会议论文、报纸、专利等类型的文献。 2. 文献的引用:标准规定了文献的引用要素,包括作者、书名、出版社、出版年份、页码等等,以确保文献的唯一性和准确性。 3. 文献的摘录:标准规定了对文献的摘录要求,包括摘要的内容、长度、篇幅等,以确保摘要的全面性和准确性。 4. 文献的编排规则:标准规定了参考文献的编排方式,包括文献的排序规则、标点符号等,确保文献列表的规范性和统一性。 GB/T 7714-2005 是一个非常重要的标准,它规范了文献转引文摘的要求,对于学术界、出版业、图书馆等机构都具有指导和参考的作用。它的实施可以提高文献转引文摘的质量、准确性和一致性,有助于保证学术研究的规范性和科学性。同时,它也方便了读者查找和引用文献,提高了查阅和使用文献的效率。 总之,GB/T 7714-2005 是一项重要的国家标准,它对于文献转引文摘的规范起到了关键性的作用,对于保证学术研究的质量和促进学术交流具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值