- Home
- Categorie
- Coding e Sistemistica
- PHP
- consigli per rendere sicuri gli script in php
-
consigli per rendere sicuri gli script in php
Buongiorno a tutti,
sono un principiante di php; come da oggetto vorrei rendere un minimo sicuri i miei script in php.
Girando sul web, ricapitolerei così le regole da seguire:- credenziali di accesso sicure (no password 1234)
- assicurarsi che non sia possibile vedere il contenuto delle cartelle
- evitare che gli errori del sito siano visibili
- password in md5 o sha1
- login con sessioni o con htpasswd
- riscrivere gli url con htaccess
- filtrare l'inserimento sul db dai form con trim, htmlspecialchars, addslashes (di seguito un esempio)
config.php
[PHP]
<?php ob_start() ?>
<?php $db=mysqli_connect('localhost','root','','fw'); ?>
[/PHP]form.php
[PHP]
<?php include 'config.php'; ?>
<form method="post" action="insert.php">
<label>Text</label>
<input name="fw_text" type="text">
<label>Radio</label>
<input type="radio" name="fw_radio" value="0">0<br>
<input type="radio" name="fw_radio" value="1">1<br>
<label>Date</label> <input name="fw_date" type="text">
<label>Datetime</label>
<input name="fw_datetime" type="text">
<label>Textarea</label>
<input name="fw_textarea" type="text">
<input name="fw_submit" type="submit" value="invia">
</form>
[/PHP]insert.php
[PHP]
<?php include 'config.php'; ?>
<?php
$fw_text = trim(htmlspecialchars(addslashes($_POST['fw_text'])));
$fw_radio = trim(htmlspecialchars(addslashes($_POST['fw_radio'])));
$fw_date = trim(htmlspecialchars(addslashes($_POST['fw_date'])));
$fw_datetime = trim(htmlspecialchars(addslashes($_POST['fw_datetime'])));
$fw_textarea = trim(htmlspecialchars(addslashes($_POST['fw_textarea'])));
$fw_sql = "INSERT INTO fw_table (fw_text,fw_radio,fw_date,fw_datetime,fw_textarea) VALUES ('$fw_text','$fw_radio','$fw_date','$fw_datetime','$fw_textarea')";
$fw_ret = mysqli_query( $db, $fw_sql );
header("location:form.php");
?>
[/PHP]vorrei sapere se può essere sufficente o se manca qualcosa.
ringrazio in anticipo per le risposte
buona giornata e buon lavoro
-
password in md5 o sha1
Attualmente, se la tua versione PHP lo permette, blowfish può essere una valida alternativa. Se proprio usi md5 e sha1, fai in modo di metterci dentro uno (o più?) salt.
addslashes
Ti converrebbe fare prima il controllo get_magic_quotes_gpc() per evitare una doppia applicazione. Qui trovi un esempio: giorgiotave.it/forum/scripting-e-risorse-utili/83033-tutorial-area-privata.html
-
Grazie Gigi per la risposta tempestiva!
Cosa intendi dicendo "mettici dentro uno o più SALT"?
cosa sono i SALT?Ok per il magic quotes poi do un occhio.
ma secondo te è sufficiente adottare questi accorgimenti o Manca qualcosa?
non devo fare un sito per una banca, ma volevo avere un minimo di sicurezza ecco...grazie mille intanto
buona giornata
-
Criptare le password in SHA256 potrebbe essere un altra soluzione
MD5 comincia ad essere troppo decifrabile, sopratutto per quelle password semplici che gli utenti spesso inseriscono
-
Che io sappia così sei tranquillo se non si tratta di banche e simili.
Sui salt trovi molto in rete, sono comunque pezzi di stringa che aggiungi alla password prima di farne l'encrypt.
Così, anche nel caso in cui qualcuno riesca ad ottenere i dati del database, non riesce con semplicità ad ottenere le credenziali di tutti gli utenti.
Se usi solo md5 (), raccolti i dati criptati, il passaggio per bucarli tutti è solo uno: trovare una stringa che col solo passaggio in md5 mi da lo stesso codice.
Sha1: considera che con cchrome 41 verrà segnalata come non sicuro per il certificato ssl.
-
In realtà no, non basta. A parte che c'è la funzione mysqli_real_escape_string() che già da sola fa molto, mancano gli accorgimenti per evitare il problema XSS e il buffer overflow.
Quando ho tempo rispondo più approfonditamente.