En aquest tema, explorarem les millors pràctiques i tècniques per assegurar els teus scripts de Bash. La seguretat és un aspecte crític en la programació, especialment quan els scripts poden interactuar amb el sistema operatiu i gestionar dades sensibles. A continuació, desglossarem els conceptes clau i proporcionarem exemples pràctics per ajudar-te a escriure scripts segurs.
Conceptes Clau
- Validació d'Entrades
- Gestió de Permisos
- Ús de Variables Segures
- Evitar Injeccions de Comandes
- Gestió de Fitxers Temporals
- Xifrat i Desxifrat de Dades
- Auditoria i Registre
- Validació d'Entrades
És essencial validar totes les entrades que el teu script rep, ja sigui de l'usuari o d'altres fonts. La validació d'entrades ajuda a prevenir injeccions de codi i altres atacs.
Exemple de Validació d'Entrades
#!/bin/bash read -p "Introdueix un número entre 1 i 10: " input if [[ "$input" =~ ^[1-9]$|^10$ ]]; then echo "Entrada vàlida: $input" else echo "Entrada no vàlida. Si us plau, introdueix un número entre 1 i 10." exit 1 fi
- Gestió de Permisos
Assegura't que els teus scripts i fitxers només tinguin els permisos necessaris. Evita donar permisos d'execució a tothom si no és necessari.
Exemple de Configuració de Permisos
- Ús de Variables Segures
Utilitza variables segures per evitar que es filtrin dades sensibles. Evita utilitzar variables globals quan sigui possible.
Exemple d'Ús de Variables Segures
#!/bin/bash # Utilitza variables locals dins de funcions function process_data() { local sensitive_data="password123" echo "Processant dades..." } process_data
- Evitar Injeccions de Comandes
Evita l'ús de eval
i assegura't que les comandes que s'executen no puguin ser manipulades per l'usuari.
Exemple d'Evitació d'Injeccions de Comandes
#!/bin/bash # Evita l'ús de eval # eval $user_input # Utilitza comandes segures user_input="ls -l" $($user_input)
- Gestió de Fitxers Temporals
Utilitza fitxers temporals de manera segura per evitar que altres usuaris puguin accedir-hi.
Exemple de Gestió de Fitxers Temporals
#!/bin/bash # Crea un fitxer temporal de manera segura temp_file=$(mktemp /tmp/tempfile.XXXXXX) # Utilitza el fitxer temporal echo "Dades temporals" > "$temp_file" # Elimina el fitxer temporal rm -f "$temp_file"
- Xifrat i Desxifrat de Dades
Quan treballis amb dades sensibles, utilitza tècniques de xifrat per protegir-les.
Exemple de Xifrat i Desxifrat
#!/bin/bash # Xifrar un fitxer gpg --output fitxer.xifrat --symmetric --cipher-algo AES256 fitxer.txt # Desxifrar un fitxer gpg --output fitxer.txt --decrypt fitxer.xifrat
- Auditoria i Registre
Mantingues registres d'activitats importants per poder auditar i detectar comportaments sospitosos.
Exemple de Registre
#!/bin/bash log_file="/var/log/script.log" echo "$(date) - Script executat per l'usuari $(whoami)" >> "$log_file"
Resum
En aquesta secció, hem après diverses tècniques per assegurar els nostres scripts de Bash. Hem cobert la validació d'entrades, la gestió de permisos, l'ús de variables segures, l'evitació d'injeccions de comandes, la gestió de fitxers temporals, el xifrat i desxifrat de dades, i l'auditoria i registre. Seguint aquestes pràctiques, podràs escriure scripts més segurs i protegir millor el teu sistema i les teves dades.
A la següent secció, explorarem el control de versions amb Git, una eina essencial per gestionar i col·laborar en projectes de programació.
Curs de Programació en Bash
Mòdul 1: Introducció a Bash
- Què és Bash?
- Configuració del teu Entorn
- Navegació Bàsica per la Línia de Comandes
- Entenent la Shell
Mòdul 2: Comandes Bàsiques de Bash
- Operacions amb Fitxers i Directoris
- Comandes de Processament de Text
- Permisos i Propietat de Fitxers
- Redirecció i Piping
Mòdul 3: Conceptes Bàsics de Scripting
Mòdul 4: Scripting Intermedi
Mòdul 5: Tècniques Avançades de Scripting
- Operacions Avançades amb Fitxers
- Gestió de Processos
- Gestió d'Errors i Depuració
- Expressions Regulars
Mòdul 6: Treballant amb Eines Externes
Mòdul 7: Automatització i Programació
- Treballs Cron
- Automatització de Tasques
- Scripts de Còpia de Seguretat i Restauració
- Monitorització i Registre
Mòdul 8: Millors Pràctiques i Optimització
- Escriure Codi Llegible
- Optimització de Scripts en Bash
- Consideracions de Seguretat
- Control de Versions amb Git