Ciao Gian, sì è una cosa personale e ti spiego anche perché mi sono posto questa domanda.
Ho fatto qualche semplice sito in PHP ed un mio conoscente dopo averlo visto e analizzato velocemente mi ha detto che secondo lui era troppo esposto al rischio di attacchi.
Mi sono fatto un giro per il web ed ho soltanto confermato ciò che già sapevo, quindi non fare include di file dinamici presi da parametro URL, la sicurezza delle sessioni e come mettere in sicurezza gli input sul sito, che potrebbero essere presi di mira per una SQL injection...
Tutte cose che ho già sistemato, ma adesso mi ha messo la "pulce nell'orecchio" e vorrei saperne un po' di più, per mettere in totale sicurezza ogni sito che sviluppo e prevenire ogni sorta d'attacco.
Continuerò a spulciarmi i materiali che trovo in rete sperando che qualche utente possa darmi qualche spunto utile!
Saluti
akeeron
@akeeron
Post creati da akeeron
-
RE: Sicurezza web
-
Sicurezza web
Salve, dopo aver studiato scripting ( lato client e server ) vorrei studiarmi tutti gli accorgimenti da prendere ed i test da fare per verificare che un sito web sia sicuro.
Ho trovato un libro sulla sicurezza web, ma è del 2009 e sinceramente ho paura di prendere un testo "deprecato", vista l'enorme velocità di sviluppo dell'informatica.
Avete qualche consiglio? Qualche titolo di libro e/o dispensa online?Grazie
-
Inserire loghi di grandi marche è legale?
Salve, ho sentito pareri vari e discordanti, quindi provo a chiedere a voi, in quella che mi sembra la sezione più appropriata: inserire i loghi di grandi marche o locali è legale?
Facciamo caso che debba citare delle marche come la Nike, Adidas, Lacoste...posso farlo tranquillamente sul mio sito? -
RE: Incomprensione visibilità delle classi
Grazie, quest'ultima spiegazione è stata molto esaustiva!
-
RE: Incomprensione visibilità delle classi
Scusa, non volevo far valere a tutti i costi la mia opinione, ho dato un'impressione sbagliata. E' che proprio non c'arrivo!
A livello puramente teorico riesco a capire ciò che mi dici, ma quindi la conclusione è che quasi tutte le variabili devono essere private o protected, e lavorarle con i metodi public? -
RE: Incomprensione visibilità delle classi
[PHP]$usr->changePassword( 'newpassword' );[/PHP]
Dove la proprietà $password è dichiarata come public. Cioè, voglio dire, non è necessario che la variabile sia private per creare un metodo simile, no? Ho letto molto in giro per internet che "non si devono far vedere i dati al di fuori della classe", ma che senso ha se l'oggetto lo uso soltanto io?
-
RE: Incomprensione visibilità delle classi
Giusto, ottima osservazione. A questo non c'avevo pensato!
Però, non potrei utilizzare il secondo metodo sempre con una variabile public? -
RE: Incomprensione visibilità delle classi
Ciao, innanzitutto grazie per la risposta.
Un esempio più pratico è nel caso in cui ho un attributo che viene usato dalla classe per effettuare un'operazione, se quest'attributo non deve poter essere modificato dall'esterno in quel caso è privata.
Il punto è, chi o cosa dovrebbe poter modificare quell'attributo?
Una volta che faccio ad esempio:[PHP]
class User {
private $password;
public $username;public function __construct( $in_username, $in_password )
{
/// Costruttore
{
}
$usr = new User( 'username', 'password' );
[/PHP]Se io per risettare la password facessi:
[PHP]$usr->changePassword( 'newpassword' );[/PHP]Oppure: ( Questo nel caso fosse public la proprietà password )
[PHP]$usr->password = 'newpassword';[/PHP]Non sarebbe praticamente la stessa identica cosa?
-
Incomprensione visibilità delle classi
Salve,
ho seri dubbi riguardo la visibilità delle proprietà di una classe. Ciò che non capisco è:
se programmo da zero una classe User ( per fare un esempio ) contenente la proprietà $password, perché questo dovrebbe essere dichiarato private se io e soltanto io ho accesso a quella classe? Inoltre, sempre seguendo questo ragionamento, che senso ha fare una funzione get e set complicandosi ancor di più la vita, se posso dichiarare semplicemente la proprietà come public?Grazie a chiunque saprà risolvermi questo dubbio!
-
RE: mancato inserimento dati dopo INSERT INTO
Di nulla, lieto d'esserti stato d'aiuto. Tieni a mente quel "trucchetto" che ti ho illustrato in questo topic, può essere utile se avrai problemi di query in futuro.
-
RE: mancato inserimento dati dopo INSERT INTO
Manca il nome del database.
[PHP]$db_connection = mysqli_connect("host","user","password","database");[/PHP]
Come vedi, il costruttore richiede quattro parametri, te ne fornisci tre, per forza non funziona la query.Saluti
-
RE: mancato inserimento dati dopo INSERT INTO
A questo punto, sei sicuro che il file conn.php stabilisca una vera connessione al DB? E che non abbia errori al suo interno? Di solito se la query funziona il problema risiede nella connessione tra PHP e MySQL.
Se anche la connessione dovesse funzionare, non so proprio come aiutarti, mi spiace!Saluti
-
RE: mancato inserimento dati dopo INSERT INTO
Non ho visto nessuno screen sfortunatamente, ma se ti dice che ha restituito un insieme vuoto la query funziona. Sei sicuro che il problema del mancato inserimento dati persista?
-
RE: mancato inserimento dati dopo INSERT INTO
Esegui questa query su phpmyadmin e vedi l'errore che ti restituisce...
-
RE: mancato inserimento dati dopo INSERT INTO
Pagina insert.php
[PHP]<?php
include ("conn.php");$ragione_sociale = $_POST['ragione_sociale'];
$via = $_POST['via'];
$citta = $_POST['citta'];
$provincia = $_POST['provincia'];
$cap = $_POST['cap'];
$stato = $_POST['stato'];
$partita_iva = $_POST['partita_iva'];
$codice_fiscale = $_POST['codice_fiscale'];
$telefono = $_POST['telefono'];$query= <<<SQL
INSERT INTO anagraficaclienti (ragione_sociale, via, citta, provincia, cap, stato, partita_iva, codice_fiscale, telefono)
VALUES ("{$ragione_sociale}", "{$via}", "{$citta}", "{$provincia}", "{$cap}", "{$stato}", "{$partita_iva}", "{$codice_fiscale}", "{$telefono}");
SQL;mysqli_query($conn, $query);
echo $query;include ("close.php");
?>[/PHP]- Lancia la pagina insert.php ( ovviamente tramite form, altrimenti non avremmo i dati nel $_POST ), DEVE mostrarti in output la query.
- Torna su phpmyadmin ed incolla la query in output dalla pagina insert.php
Riprova a seguire questi passi, poi posta il messaggio d'errore.
-
RE: mancato inserimento dati dopo INSERT INTO
Ok, adesso la sintassi è chiara, e appurato che il problema non risiede nel codice, ti insegno un trucco.
Al posto di echo "ok"; metticiecho $query;
Lancia la pagina, copia la query stampata dall'echo, vai su phpmyadmin, ed esegui direttamente da lì quella query.
Quando ti restituirà l'errore user friendly, saprai dove andare a cercare -
RE: mancato inserimento dati dopo INSERT INTO
Innanzitutto, ti consiglio questa soluzione, perché più pratica:
[PHP]
$query = <<<SQL
INSERT INTO anagraficaclienti (ragione_sociale, via, citta, provincia, cap, stato, partita_iva, codice_fiscale, telefono)
VALUES( "{$value1}", "{$value2}", "{$value3}" );
SQL;
[/PHP]E adesso ti spiego perché non funziona nel tuo metodo:
[PHP]$query="INSERT INTO anagraficaclienti (ragione_sociale, via, citta, provincia, cap, stato, partita_iva, codice_fiscale, telefono)";
$query.=" VALUES ('".$ragione_sociale."', '".$via."', '".$citta."', '".$provincia."', '".$cap."', '".$stato."', '".$partita_iva."', '".$codice_fiscale."', '".$telefono."')";
[/PHP]Tu hai scritto:
[PHP]$query .=" VALUES ("[/PHP]
e rimettendo le doppie virgolette senza escape dopo VALUES (, è normale che ti si interrompa la stringa.
Inoltre, hai incasinato l'ordine delle virgolette, singole e doppie.Se proprio volessi utilizzare il tuo metodo, effettua l'escape delle doppie virgolette con "
Spero di essere stato chiaro...PS: Ma c'è un motivo per cui tu inserisci un campo
".roma."
nel database? -
RE: Regime dei minimi fatturazione all'estero
Con la partita IVA col regime dei minimi non puoi assolutamente emettere fatture fuori dall'Italia.
Per quanto riguarda il corso proprio non sò.. -
RE: Motori visitano il mio sito e il db segna il conteggio
Per visualizzare gli IP del visitatore, sempre dall'array superglobale SERVER
[PHP]$_SERVER['REMOTE_ADDR'][/PHP]
Basta che, nella funzione <i>is_spider</i> crei un array di IP da non conteggiare, ad esempio in questo modo:
[PHP]
$bannedip = array( '1.2.3.4', '2.3.4.5', ... ); // Inserisci tutti gli IP conosciuti
foreach( $bannedip as $check ) {
if( !strcmp( $_SERVER['REMOTE_ADDR'], $check ))
return true;
}
[/PHP]
Questo è il modo, come detto sopra, per non conteggiare gli IP conosciuti...
Se cerchi invece un modo per evitare che proprio facebook non effettui visite, non posso aiutarti! -
RE: Motori visitano il mio sito e il db segna il conteggio
PHP offre un metodo semplice che, se sfruttato bene, puo determinare se si tratta di un 'googlebot' ecc.
Ti basterà infatti fare un controllo sulla stringa contenuta in
[PHP]$_SERVER['HTTP_USER_AGENT'][/PHP]
Spero di esserti stato d'aiuto.
Saluti