Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

640
Vistas
Url de auditoría abierta para esquemas permitidos. Permitir el uso de "archivo:" o esquemas personalizados a menudo es inesperado

Estoy usando esta declaración en Python

 jsonreq = json.dumps({'jsonrpc': '2.0', 'id': 'qwer', 'method': 'aria2.pauseAll'}) jsonreq = jsonreq.encode('ascii') c = urllib.request.urlopen('http://localhost:6800/jsonrpc', jsonreq)

En esto, recibo esta advertencia/error cuando realizo una prueba de calidad del código

Url de auditoría abierta para esquemas permitidos. Permitir el uso de "archivo:" o esquemas personalizados a menudo es inesperado.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Debido a que me topé con esta pregunta y la respuesta aceptada no funcionó para mí, investigué esto yo mismo:

Por qué urlib es un riesgo de seguridad

urlib no solo abre las URL http:// o https://, sino también ftp:// y file://. Con esto, podría ser posible abrir archivos locales en la máquina ejecutora, lo que podría ser un riesgo de seguridad si un usuario externo puede manipular la URL para abrir.

Cómo arreglar esto

Usted mismo es responsable de validar la URL antes de abrirla con urllib. P.ej

 if url.lower().startswith('http'): req = urllib.request.Request(url) else: raise ValueError from None with urllib.request.urlopen(req) as resp: [...]

Cómo solucionar esto para que el linter (por ejemplo, bandido ) ya no se queje

Al menos bandit tiene una lista negra simple para la llamada de función. Siempre que use urllib, el linter generará una advertencia. Incluso si SÍ valida su entrada como se muestra arriba. (O incluso usar URL codificadas).

Agregue un comentario #nosec a la línea para suprimir la advertencia de bandit o busque la palabra clave de supresión para su linter/code-checker. Es una buena práctica agregar también comentarios adicionales que indiquen POR QUÉ cree que no vale la pena una advertencia en su caso.

over 4 years ago · Santiago Trujillo Denunciar

0

creo que esto es lo que necesitas

 import urllib.request req = urllib.request.Request('http://www.example.com') with urllib.request.urlopen(req) as response: the_page = response.read()
over 4 years ago · Santiago Trujillo Denunciar

0

Para las personas que no pudieron resolverlo con las respuestas anteriores. En su lugar, podría usar la biblioteca de requests , que no está en la lista negra de Bandit.

https://bandit.readthedocs.io/en/latest/blacklists/blacklist_calls.html#b310-urllib-urlopen

 import requests url = 'http://www.example.com' the_page = requests.get(url) print(the_page.json()) # if the response is json print(the_page.text) # if the response is some text
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda