Nelle query MySQL, quanto è importante inserire i backtick attorno al nome di una tabella. Ha qualcosa a che fare con la sicurezza? Gli attacchi di iniezione di MySQL sono possibili attraverso il nome della tabella se il nome della tabella viene creato dinamicamente in PHP in base agli input dell'utente?Importanza del backtick attorno al nome della tabella nella query MySQL
risposta
Gli apici inversi si aiutano accidentalmente utilizzando un nome che è una parola riservata in SQL, per esempio. Prendi un tavolo chiamato "dove", è un nome stupido per un tavolo, sono d'accordo, ma se lo avvolgi in apici inverso funzionerà bene.
Se si dispone di un nome di tabella con lo stesso nome di una parola chiave, ad es. selezionare, la seguente query continua a funzionare:
select * from `select`;
Nelle query MySQL, quanto è importante inserire i backtick attorno al nome di una tabella. Ha qualcosa a che fare con la sicurezza ?
Per quanto riguarda i backtick, li uso quando c'è un conflitto di nomi tra i nomi di mysql-specifcs e quelli di query.
Sono MySQL attacchi di iniezione possibili attraverso il nome della tabella, se il nome della tabella viene creata in modo dinamico in PHP sulla base di input dell'utente?
Quando c'è un input da parte dell'utente, è necessario assicurarsi di filtrare e convalidare l'input proveniente dall'utente. Quindi sì, c'è un rischio per la sicurezza.
ti consiglierei di utilizzare intval per i numeri e mysql_real_escape_string funzione per tutte le variabili che si possono utilizzare nelle query.
Per aggiungere a questa risposta ... QUALSIASI MOMENTO una variabile viene inserita in una stringa SQL, è un'opportunità per un'iniezione SQL. E non importa da dove provengano questi dati, nulla è mai veramente sicuro. Scappa sempre tutto. – TravisO
@TravisO: d'accordo e grazie per aver aggiunto che :) – Sarfraz
Qualcosa che ho imparato di recente, mysql_real_escape_string() non sfugge ai backtick. Se stai usando una variabile PHP come nome di una tabella, allora può essere sfruttata. – Noodles
- 1. Cosa fanno esattamente le virgolette attorno al nome della tabella?
- 2. Utilizzo di backquote/backtick per query mysql
- 3. MySQL Query, unendo numero 2 della tabella
- 4. MySQL: quando il nome del parametro della procedura memorizzata è uguale al nome della colonna della tabella
- 5. MySQL - Necessità del nome della tabella circostante con `(tickmarks)?
- 6. Inserire il contenuto del file nella colonna della tabella MySQL
- 7. Cosa significano le parentesi attorno al nome della funzione?
- 8. Modifica il nome del campo mysql in una tabella enorme
- 9. Creazione della chiave univoca nella tabella MySQL riferita alla data
- 10. Mysql Query su server senza l'utilizzo della tabella federata
- 11. query MySQL utilizzando variabile come nome della tabella in LEFT JOIN
- 12. mysql nidificato SELECT UPDATE della stessa tabella
- 13. Caratteri accentati nella tabella mySQL
- 14. Inserimenti MySQL simultanei nella stessa tabella: come?
- 15. Come eliminare i duplicati nella tabella MySQL
- 16. Quante colonne nella tabella MySQL
- 17. Il nome della tabella o la lunghezza del nome della colonna influiscono sulle prestazioni?
- 18. Ottimizzazione della query MySQL su una tabella di grandi dimensioni
- 19. Compilazione di una tabella dai risultati della query (mysql)
- 20. Utilizzare la query di selezione all'interno della query di inserimento per lo stesso nome tabella
- 21. Nome tabella dinamica query SQL in FOR
- 22. Cambia il nome della colonna senza ricreare la tabella MySQL
- 23. Utilizzo di caratteri jolly nel nome della tabella mysql
- 24. Variabili MYSQL nella query php
- 25. String confrontare esattamente nella query MySQL
- 26. Query sensibile al caso MySQL
- 27. Scrittura del frame di dati nella tabella DB MySql
- 28. Trova duplicati nella stessa tabella in MySQL
- 29. Specifica del nome della tabella intermedia in JPA OneToMany relationship
- 30. Esegui query SQL sull'avvio del servizio MySQL
Questo succede molto quando si ha un campo chiamato 'password'. –
Grazie, ho imparato qualcosa di nuovo. Immagino che contrassegnare una colonna chiamata "ordine" con i backtick eviterebbe anche di scontrarsi con quella parola riservata. – eoinoc
Abbiamo bisogno di usarli anche in PostgreSQL? –