Los errores de autenticación y autenticación de rutas HTTP de aplicaciones web son algunos de los problemas de seguridad más comunes que se encuentran en la actualidad. Estos recursos estándar de la industria resaltan la gravedad del problema:
- 2021 [OWASP Top 10](https://www.kitploit.com/search/label/OWASP Top 10) #1 – Control de acceso roto
- 2021 OWASP Top 10 #7: Fallos de identificación y autenticación (anteriormente Autenticación rota)
- 2023 OWASP API Top 10 #1 – Autorización a nivel de objeto roto
- 2023 OWASP API Top 10 #2 – Autenticación rota
- 2023 OWASP API Top 10 #5 – Autorización de nivel de función rota
- 2023 CWE Top 25 #11 – CWE-862: Falta autorización
- 2023 CWE Top 25 #13 – CWE-287: Autenticación incorrecta
- 2023 CWE Top 25 #20 – CWE-306: Autenticación faltante para funciones críticas
- 2023 CWE Top 25 #24 – CWE-863: Autorización incorrecta
Frameworks web compatibles (
route-detect
ID entre paréntesis):
- Python: Django (
django
,django-rest-framework
), matraz (flask
), Sanic (sanic
) - PHP: Laravel (
laravel
), Symfony (symfony
), CakePHP (cakephp
) - Rubí: Rieles* (
rails
), Uva (grape
) - Java: JAX-RS (
jax-rs
), primavera (spring
) - Ir: Gorila (
gorilla
), Ginebra (gin
), Chi (chi
) - JavaScript/TypeScript: Expreso (
express
), Reaccionar (react
), Angular (angular
)
El soporte de rieles es limitado. Consulte este problema para obtener más información.
Instalación
Utilice
pip
para instalar
route-detect
:
$ python -m pip install --upgrade route-detect
Puedes comprobar que
route-detect
está instalado correctamente con el siguiente comando:
$ echo 'print(1 == 1)' | semgrep --config $(routes which test-route-detect) -
Scanning 1 file.
Findings:
/tmp/stdin
routes.rules.test-route-detect
Found '1 == 1', your route-detect installation is working correctly
1┆ print(1 == 1)
Ran 1 rule on 1 file: 1 finding.
Usando
route-detect
proporciona el
routes
comando CLI y lo utiliza
semgrep
para buscar rutas.
Utilice el
which
subcomando para señalar
semgrep
las reglas correctas de la aplicación web:
$ semgrep --config $(routes which django) path/to/django/code
Utilice el
viz
subcomando para visualizar información de ruta en su navegador:
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
Si no está seguro de qué marco buscar, puede utilizar el
all
ID especial para comprobarlo todo:
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
Si tiene una lógica de autenticación o autenticación personalizada, puede copiar
route-detect
las reglas de :
$ cp $(routes which django) my-django.yml
Luego puede modificar la regla según sea necesario y ejecutarla como se muestra arriba:
$ semgrep --json --config my-django.yml --output routes.json path/to/django/code
$ routes viz --browser routes.json
Contribuyendo
route-detect
usos
poetry
para la gestión de dependencias y configuración.
Antes de continuar, instale las dependencias del proyecto con el siguiente comando:
$ poetry install --with dev
Enlaces
Lint todos los archivos del proyecto con el siguiente comando:
$ poetry run pre-commit run --all-files
Pruebas
Ejecute pruebas de Python con el siguiente comando:
$ poetry run pytest --cov
Ejecute pruebas de reglas de Semgrep con el siguiente comando:
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/