Python网站的漏洞如何检查?

news/2024/5/20 13:01:14/文章来源:https://blog.csdn.net/qq_32506555/article/details/77417154

本文和大家分享的主要是python网站的漏洞检查相关内容,一起来看看吧,希望通过本文的分享能帮助大家更好的检查出python开发的标准网站中的高风险问题。

SQL注入

  查找所有含有SQL查询的文件,你要找到使用和下面语法类似的查询语句:

  stmt = "SELECT * FROM table WHERE id=?" connection.execute(stmt, (value,))

  这意味着应用程序是使用参数化的查询。你不能找到以下任何一个的查询:

  "SELECT * FROM table WHERE id=" + value

  " SELECT * FROM table WHERE id=%s" % value

  "SELECT * FROM table WHERE id={0}".format(value)

  如果没有其他合适的处理这些都会导致SQL注入,最好还是使用参数化的形式。

  命令注入

  查找所有含有导入OS模块的文件。仔细检查这些文件确保没有不可接受的用户输入传递给os.popen*, os.spawn*, os.fork, os.system, 或者 os.exec* 。同时也要检查任何popen2模块和commands模块的调用。记住,除了os.exec*os.spawn*,以上其他的方法和模块都不赞成使用,从Python2.6开始使用subprocess模块。任何还在使用这些方法或者包的应用都应修改为使用subprocess模块。虽然不反对,还是建议使用subprocess替换os.spawn*

  查找含有导入subprocess模块的文件,确保没有不可接受的用户输入传递给保重的任何方法。默认情况下所有的subprocess方法会将shell参数设定为False,以防止shell特殊字符被解释。这可以防止典型的命令注入攻击。如果需要将shell参数设置为True,那么根据你的python版本使用pipes.quete()shlex.quote()函数先审查用户输入。

  不能有以下调用方式:

  subprocess.call("cat " + user_input, shell=True)

  subprocess.call("cat %s" % user_input, shell=True)

  subprocess.call("cat {0}".format(user_input), shell=True)

  如果shell=True 是必须的那么请这样调用:

  subprocess.call("cat " + pipes.quote(user_input), shell=True)

  subprocess.call("cat %s" % pipes.quote(user_input), shell=True)

  subprocess.call("cat {0}".format(pipes.quote(user_input)), shell=True)

  如果shell=True不是必须的那么这样的调用已经足够,但是我还是建议对用户输入信息进行检查:

  subprocess.call("cat " + user_input)subprocess.call("cat %s" % user_input)subprocess.call("cat {0}".format(user_input))

  文件包含漏洞

  查找使用open()语句或者调用os.fdopen()方法的文件,确保没有不可接受用户输入传递给这些方法。

  避免出现如下形式的调用:

  open(user_input)os.fdopen(user_input)

  在打开一个文件前,先检查用户的输入,然后确定这个文件打开是否安全。这里有一个很好的例子:https://security.openstack.org/guidelines/dg_using-file-paths.html:

  这将获得用户输入的绝对路径,并确保它从当前的工作目录开始,如以下:

根据python代码的结构,可以不适用当前的工作目录。任务目录路径都是可以用的。

  跨站脚本

  这个程序没有使用模板语言,因此需要在所有文件中查找使用cgi模块的文件,确保所有用户提供的输入都会使用cgi.escape()写回浏览器。cgi.escape()会将<,>,&替换成HTML中的对应的符号。cgi.escape()的第一个参数是需要转换的字符串。第二个参数默认值为False,可以用来判断是否将双引号也进行转换。如果用户输入将在内部属性中使用,那么双引号也应该被转换。

  CGI脚本使用简单的打印语句来创建从网站服务器返回给网页浏览器的页面。如下形式的调用应当避免:

  print(user_input)

  应当使用下面的:

  print(cgi.escape(user_input))

  两者间的差异可以在下面的例子中清除的看到:

下面一个例子展示了将双引号替换的理由。在第一个打印语句中用户输入增加了一个新的属性,在第二个将引号替换防止用户输入插入一个新的属性。

异常处理

  审查应用程序,确保适当的异常处理和日志记录。具体地说,寻找try/except子句,并确保捕获的异常记录在日志中和得到适当的处理。在Python中一个常见的模式是使用如下所示的try/except子句:


这种模式捕获所有的异常,并简单地忽略它们,而不是记录和处理它们。一个更合适的模式应该是这样的:


 思考

  在这种特殊的情况下,用pythonWeb应用没有使用框架(框架常常可以保护开发者避免犯上面提到的最基本的错误)。如果你要写一个基于Pythonweb应用,我建议你使用一个好的框架,像Flask,CherryPyWeb2P或者Django。使用框架不能保证你不会遇到这些基本的问题带来的麻烦,但如果使用恰当,可以防止大多数问题的发生。

  另一件事要记住,上面列出一些安全问题及其修复建议并不局限于Web应用。在生产环境中使用的任何Python脚本都应该检查这些问题。

 

 

来源:杂术馆

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_775562.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Varnish为web网站加速

使用Varnish为网站加速 varnish概述 Varnish是一款高性能的开源HTTP加速器&#xff0c;挪威最大的在线报纸Verdens Gang (http://www.vg.no) 使用3台Varnish代替了原来的12台squid&#xff0c;性能居然比以前更好。Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一&a…

从网站抓取数据并在 Excel 中整合

从网站抓取数据并在 Excel 中整合 在本文中&#xff0c;我们将看到下一个练习使用 UiPath 的任务。当您进入公司或作为自由职业者工作时&#xff0c;这将使您了解更多并为实时工作做好准备。在这项任务中&#xff0c;我们更关注数据抓取概念。通过完成这个任务你会学到什么&…

LAMP网站架构各模块配置的分析

LAMP&#xff08;Linux-Apache-MySQL-PHP&#xff09;网站架构是目前国际流行的Web框架&#xff0c;该框架包括&#xff1a;Linux操作系统&#xff0c;Apache网络服务器&#xff0c;MySQL数据库&#xff0c;Perl、PHP或者Python编程语言&#xff0c;所有组成产品均是开源软件&a…

减少网站跳转时间,增强网站数据安全——HSTS 详解

近年来随着 Google、Apple、百度等公司不断推动 HTTPS 普及&#xff0c;全网 HTTPS 已是大势所趋。目前多数网站都已经支持 HTTPS 访问&#xff0c;但是在由 HTTP 转向 HTTPS 路程中&#xff0c;不少网站依然会面临很多问题。 通常用户准备访问某个网站时&#xff0c;不会在输入…

酷站设计:学习制作单页网站的10个优秀案例

这篇文章与大家分享10个学习制作单页网站的优秀案例。这些网站使用丰富多彩&#xff0c;令人惊叹的图像和干净的排版。从视差滚动和流畅的动画到固定和干净的菜单&#xff0c;你会发现单页网站的效果真的很酷&#xff0c;令人难忘&#xff01;享受这些炫目的设计并获得到启发。…

html iframe 设置半透明_防止网站被iframe内框架调用的方法

今天有人反馈了一个在iframe内无法调用网站同一个站点的页面问题并报错&#xff0c;就在网站查了一些相关的资料&#xff0c;整理一下关于禁止网站所有页面或某一个页面被iframe内框架调用的方法。网站iframe内框架调用页面报错如下Refused to display http://xxxxxx.com in a …

mysql运维常见故障_无故障(停机)时间 - MySQL数据库运维的五大指标_数据库技术_Linux公社-Linux系统门户网站...

1.2.无故障(停机)时间运维和开发不一样&#xff0c;开发最重要的是保证一定效率的情况下实现功能&#xff0c;同时程序Bug少。运维讲的是提供稳定服务的时间。用术语来说就是几个9&#xff0c;具体含义就是年度不可服务(不管是主动的还是被动的)时间除以全年时间&#xff0c;百…

使用github构建自己网站

一、本地仓库 1.1、使用git创建版本库 选中源代码文件夹&#xff0c;右击调出菜单&#xff0c;选择创建版本库 建议不要勾选这个框制作纯版本库&#xff0c;直接点确定即可 最后源代码文件夹上出现一个绿色的对号&#xff0c;并且文件夹里面出现了一个.git的新文件夹则表示…

pc端的企业网站(IT修真院test9)详解一个响应式完成的pc端项目

一&#xff1a;引入bootstrap框架 昨天一直被bootstrap栅格系统折磨。 why? 我本来想一边码字&#xff0c;一边学习栅格布局的。but不成功。这时我头脑已经昏了。 下午&#xff0c;我查看了bootstrap的官网&#xff0c;带着我的问题&#xff1a;究竟怎么使用bootstrap的框架…

一个完整的学院网站实现过程

分享 项目介绍 ​ 本项目是东北大学计算机学院网站的一个非官方版本.涉及了前端/后端/数据库/备案/https/域名/服务器等内容 Build Setup # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build for production with minific…

[阅读笔记]仅用37行代码构造网站的全文检索

仅用37行代码构造网站的全文检索 英文标题:DotLucene: Full-Text Search for Your Intranet or Website using 37 Lines of Code 原文地址: http://www.codeproject.com/KB/aspnet/DotLuceneSearch.aspx 作者:Dan Letecky在线演示 示例下载(包含索引文件) <?xml:namespace …

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

去年八月时要做一个OA系统为了后台界面而烦恼&#xff0c;后来写了一篇博客&#xff08;《后台管理UI的选择》&#xff09;介绍了选择过程与常用后台UI&#xff0c;令我想不到的时竟然有许多开发者与我一样都为这个事情而花费不少时间&#xff0c;最后界面效果还是不佳&#xf…

网站维护必知:网站压力测试

【IT168 专稿】互联网的普及&#xff0c;宽带的流行&#xff0c;使得越来越多的个人和单位都架设了自己的网站。而充当网站的服务器的大多是普通的PC或者低档服务器&#xff0c;这样访问者人数一多或者遭受DDos攻击&#xff0c;很容易造成瘫痪。因此我们需要网站在真正发布前对…

网站验证码制作与调用

后台 一般处理程序生成验证码&#xff1a; 1 public void ProcessRequest(HttpContext context)2 {3 int codeW 80;4 int codeH 22;5 int fontSize 16;6 string chkCode string.Empty;7 //颜色列表&…

如何在ASP.NET中使用验证通过的Windows Live ID用户登录网站

前言 现在有很多在线服务的验证&#xff0c;我曾经就写过一篇 如何在ASP.NET中创建OpenID, 这里我再介绍如何使用Windows Live ID在ASP.NET应用程序中验证用户的身份&#xff0c;说穿了这也是一种特殊验证模型&#xff0c;也就是说当在您的网站中使用Windows Live ID登录时&…

主流网站视频下载

比如想下载 B站&#xff0c;优酷&#xff0c;腾讯视频&#xff0c;芒果&#xff0c;头条&#xff0c;搜狐 等视频网站的视频&#xff0c;我们只需要在URL 前加入这个&#xff1a; https://www.parsevideo.com/#比如这个 B站视频 &#xff1a; https://www.bilibili.com/video…

12个Icon图标资源网站

今天把自己收藏最好的12个Icon图标资源网站整理分享出来。1.除了Icon以外&#xff0c;还有很多不错的UI设计素材。 地址&#xff1a;http://worldui.com/2.除了免费Icon资源下载以外&#xff0c;还提供Icon定制的付费服务。地址&#xff1a;http://dryicons.com/3.很喜欢这个ic…

作为前端你拿什么证明网站体验?

前端重构程序员是一个关注代码同时还要留意体验的异类。代码的优化虽然难&#xff0c;但是有比较多的性能测试工具去证明优化的成果。然而体验这种东西&#xff0c;我们又要如何去证明它的好与坏呢&#xff1f; 一、视觉体验优化 页面加载数据请求图片渲染 二、数据证明体验…

初探SEO关键词竞争程度的智能算法思路

腾讯DeepOcean原创文章&#xff1a;http://dopro.io/seo-intelligent-algorithm.html 在seo优化过程中&#xff0c;关键词尤其重要。一个恰当的关键词往往可以给网站导入非常大的流量&#xff0c;提升网站的曝光量&#xff0c;带来更多目标用户&#xff0c;使网站产品更好的实…

花了两天时间做了一个 deno 的网站,编译了 deno 的 Windows 版本

网站地址: https://deno.js.cn 先上网站截图&#xff1a; 相信很多人都关注了 deno&#xff0c;毕竟是 nodejs 之父的大作。但是官方的编译指南也只是针对 Linux 和 Mac 环境的&#xff0c;如果你有一个可以科学上网的设备&#xff0c;那么只需要按照 readme 就可以顺利的编译…