Ho sempre fatto siti scrivendo a mano tutto, e ora vorrei velocizzarmi e migliorami con Yii.
Ho un dubbio al quale non ho trovato risposta.
Gli input dell’utente, form di contatto o login o qualsiasi altro, i quali vengono salvati nel database o usati per una ricerca nel database o semplicemente passati alla pagina successiva…
Come si fa a controllarli e renderli sicuri? per prevenire qualsiasi tipo di injection o attacco?
Yii lo fa in automatico quando faccio le query o ci sono delle classi che devo richiamare ogni volta per ogni input?
Faccio un esempio cosi magari mi spiego meglio:
io ad ogni input faccio il trim, converto i caratteri speciali in entità html, controllo con preg match l’input in modo da evitare per esempio sql injection.
si avevo letto quella pagina ma non parla del filtraggio dei valori provenienti dagli input.
Per esempio non parla di come difendersi da sql injection.
Non riesco a capire se quando faccio il validate dei valori lui in automatico fa l’escape degli apostrofi, se converte i caratteri speciali ecc ecc o se devo farlo io manualmente per ogni valore come si farebbe normalmente scrivendo tutto il codice a mano senza usare framework.
non so se sono riuscito a fare capire quello che intendo
EDIT:
per esempio se io faccio
$post->attributes=$_POST['Post'];
lui in automatico mi salva il valore dal $_POST e mi fa per esempio gli escape degli apici ecc? Vorrei capire cosa succede e cosa fa Yii automaticamente.
Capito. Nella pagina che parla dell’active record dice questo:
Se vuoi vedere meglio come lavora Yii, guarda direttamente il codice. In ogni caso si: le query non scritte a mano si occupano da sole di quel tipo di sicurezza.
Wow grazie mille della spiegazione! Era proprio quello che volevo sentire. Avevo provato a cercare tra i file del framework senza successo…
Posso chiederti un informazione veloce? Su che file di yii devo guardare per trovare la funzione/classe che fa questo? solo per curiosità per vedere com’è implementata la cosa (vorrei capire come funzione)
Non le trovi queste funzioni, i parametri vengono puliti dalla bindValue del PDO, in sostanza sono puliti dalla libreria di connessione al server sql che stai usando