用强盗识别和纠正Python中的安全漏洞
#初学者 #python #安全 #devsecops

软件开发中缺少安全保证,它提供了镀铬问题,可能包含未注意的漏洞,危害数据的完整性和隐私。今天,我们将探索由Bandit确定的Transe事件安全性,这是Python代码强大的安全水工具,并学习如何纠正它们。

Bandit是一种Python源代码保险工具,可验证您的代码以搜索已知漏洞和潜在的安全威胁。

Python代码

import requests
from flask import Flask, Response

app = Flask(__name__)

@app.route('/')
def home():
    json_url = 'http://127.0.0.1:3000'
    response = requests.get(json_url)
    json_data = response.json()

    page = []
    for data in json_data:
        dia_jogo = f"<h2>{data.get('diaJogo', '')}</h2>"
        tabela_html = data.get('content', '')
        page.append(dia_jogo)
        page.append(tabela_html)

    return Response(page)

if __name__ == '__main__':
     app.run(debug=True, host='0.0.0.0', port=5000)

此示例使用框架瓶定义了Web应用程序。当某人访问应用程序的root(“/”)时,它将使用“请求”库将HTTP请求发送到本地服务器(http://127.0.0.1:3000),并获得JSON数据作为答案。然后,他在HTML中格式化了此数据,并将其显示为用户浏览器中的Web糊状物,包括(<h2>)和表格。当脚本直接执行时,该应用程序在端口5000的“ 0.0.0.0”上执行。

想象一下,在本地开发这种情况的情况,以及以预期的方式预期后,将在服务器上执行。让我们执行强盗,看看我们是否发现有问题。

土匪

安装强盗:pip install bandit

fut.py,示例位于上方的文件的名称。

execu㧣o:bandit fut.py

我们找到了这些火车事件的命令:

bandit

事件1:要求

BANDIT确定的第一个漏洞是HTTP请求缺乏超时限制。以我们的方式,so called requests.get(json_url)没有指定的超时,如果服务器不响应,则可能导致性能问题或锁定。为了避免这种情况,您必须为请求定义一个时间限制,如aqui所述。

事件2:烧瓶的暴露

土匪发现的最严重的问题之一是暴露烧瓶的首次亮相模式。在我们的示例中,debug = true配置允许外部访问werkzeug调试器,这可以通过HTTP请求进行任意执行。为了纠正这一点,请确保在生产环境中禁用驱逐模式,如aqui

事件3:与所有接口结合

确定的最后一个事件是可能与所有网络接口的绑定。在这种情况下,使用主机='0.0.0.0'将应用程序绑定到所有接口的方式,就安全性而言可能是风险的。为了纠正这一点,您必须指定要绑定其应用程序的接口,除此之外,还将使用反向Web服务器来转发烧瓶应用程序的请求,以通过Localhost(127.0.0.1)和在具体的门。讨论了有关此事件的详细信息aqui

import requests
from flask import Flask, Response

app = Flask(__name__)

@app.route('/')
def home():
    json_url = 'http://127.0.0.1:3000'
    response = requests.get(json_url, timeout=10)
    json_data = response.json()

    page = []
    for data in json_data:
        dia_jogo = f"<h2>{data.get('diaJogo', '')}</h2>"
        tabela_html = data.get('content', '')
        page.append(dia_jogo)
        page.append(tabela_html)

    return Response(page)

if __name__ == '__main__':
     app.run()

包括£o

BUNDIT将提供有关您以您发现的任何保险问题的详细报告。您必须审查这些报告并采取适当的措施来纠正已确定的漏洞。

请记住,匪徒专注于检查Python的特定保险问题,例如任意执行的漏洞(例如,对国家注射),管理层不充分的秘密和其他已知风险。

在接触Bandit确定的这些事件时,您了解到,始终遵循最佳安全持有人的案件和更新。