Joomla.it Forum
Non solo Joomla... => Sviluppo => : iacoposk8 03 Mar 2011, 11:02:32
-
Ciao a tutti! io conosco il php e l'sql ma non molto le api di joomla.. sapete dirmi come eseguire con le api i comandi sql per inserire eliminare aggiornare e selezionare dei campi sul database?
e seconda cosa, se io eseguo una query con le api di joomla poi ci pensano le api alla sicurezza o no?
e ultima cosa... se uso le api che mi consiglierete o uso chronoform e chronoconnectivity la sicurezza sarà la stessa? perchè ogni tanto credo sarà indispensabile usare questi componenti e api assieme :)
grazie :)
-
ho trovato qualcosa... per esempio per stampare il campo pri_foto della tabella jos_chronoforms_pri_foto solo dove cf_user_id vale 63 scrivo il codice sotto... ma con lo stesso metodo posso scrivere anche delle insert into, update e delete? e la sicurezza è come quella offerta da chronoform? grazie :)
$db =& JFactory::getDBO();
$query = "
SELECT ".$db->nameQuote('pri_foto')."
FROM ".$db->nameQuote('#__chronoforms_pri_foto')."
WHERE ".$db->nameQuote('cf_user_id')." = ".$db->quote(63).";
";
$db->setQuery($query);
$result = $db->loadResult();
-
ciao iacoposk8,
conosci questo sito ?
http://api.joomla.org/li_Joomla-Framework.html
-
no... se apro il link mi dice come errore: Not Acceptable
però oltre alle api che (correggetemi se sbaglio) mi sembra di aver trovato mi servirebbe sapere se ho la stessa sicurezza offerta da chronoform o se c'è da aggiungere dell'altro e se con lo stesso metodo posso fare oltre che la SELECT anche INSERT INTO, UPDATE e DELETE
-
http://docs.joomla.org/How_to_use_the_database_classes_in_your_script
quella che tu chiami "sicurezza" che in realtà si chiama semplicemente scrivere correttamente del codice, ci devi e dovrai sempre pensare tu.
M.
-
io infatti il codice che ho scritto prima l'ho preso da li! :)
ma quindi usando le api non si ha sicurezza se ci devo pensare io?
ma allora che vantaggi ha usare le api, solo la velocità dello scrivere il codice?
grazie per avermi risposto:)
-
mmmhh mi sa che hai qualche lacuna, comunque si, uno dei vantaggi delle api è anche risparmiare di scrivere codice
M.
-
che lacuna? a me interessava sapere se con il codice per leggere da un database postato in precedenza ho sicurezza o c'è da aggiungerci dell'altro?
-
aiutatemi vi prego! :'(
-
scusa ma ragiona un'attimino visto che dici di conoscere sia php che sql,... quì joomla non centra nulla..
se io faccio una query all'interno del mio script e gli dico "leggi dalla tabella BIMBI ed estrai le righe dove i bimbi hanno il maglione rosso.
Non esiste possibilità di manipolare la query.
se la query è dinamica, ovvero prendi dati dall'uri o dal post o da dove vuoi tu, allora diventa:
"leggi dalla tabella BIMBI ed estrai le righe dove i bimbi hanno il maglione $colore
Il colore diventa arbitrario ... ma lo dovrà essere secondo precisi criteri... ovvero dovrai controllare tutto ciò che passa per vedere se è un colore o una stringa di iniezione.
...non ci sarà mai nessuno che lo farà per conto tuo.
M:
-
questo per quanto riguarda l'sql injection, però io non ho idea di quanti modi ci sono per "bucare" un sito, non mi son mai interessato a queste cose...
io nell'esempio ho fatto una query statica, ma se l'avessi fatta dinamica sarei sicuro con quelle API o ne servono altre o bisogna aggiungere delle modifiche?
sarei sicuro con quel codice? se fosse dinamico? per esempio:
$id=$_GET['id'];
$db =& JFactory::getDBO();
$query = "
SELECT ".$db->nameQuote('pri_foto')."
FROM ".$db->nameQuote('#__chronoforms_pri_foto')."
WHERE ".$db->nameQuote('cf_user_id')." = ".$db->quote($id).";
";
$db->setQuery($query);
$result = $db->loadResult();
-
ma se l'avessi fatta dinamica sarei sicuro con quelle API o ne servono altre o bisogna aggiungere delle modifiche?
-----------------------------------------------------------------------------------------------
bah... probabilmente non riesco a farmi capire... è una pagina che ti dico sempre e solo la stessa cosa:
api, farfalle e bacarozzi alla sicurezza ci devi pensare sempre e solo tu
M.
-
quindi perchè dovrei usare le API di joomla? se uso le API del php è la stessa cosa se comunque devo pensare a tutto io.. no?
-
scusa mi diresti quali sono le api per php?
M.
Da wikipedia:
Le Application Programming Interface API (Interfaccia di Programmazione di un'Applicazione), sono ogni insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per un determinato compito. È un metodo per ottenere un'astrazione, di solito tra l'hardware e il programmatore, o tra software a basso ed alto livello. Le API permettono di evitare ai programmatori di scrivere tutte le funzioni dal nulla.Le API stesse sono un'astrazione: il software che fornisce una certa API è detto implementazione dell'API.
-
mysql_query, mysql_fetch_array, mysql_num_rows ....
-
... sono normalissime funzioni mysql che anche usando le api di joomla useresti, non direttamente, infatti se leggi quello che ti ho estrapolato da wikipedia:
Le API permettono di evitare ai programmatori di scrivere tutte le funzioni dal nulla
invece di fare la connect, select db, query, array dei risultati, chiusura della connessione dopo la chiamata, (e tante altre semplificazioni) istanzi il db e ne usi i metodi e le proprietà disponibili... però se non conosci l'oop è difficile che ne afferri l'utilità e la maggior pulizia di codice nell'implementazione, se per te il singleton equivale al charleston ... direi che stai + o - a php 3 quando ormai siamo al 6
M.
-
la programmazione ad oggetti la conosco.. ma ultima cosa: nameQuote a cosa serve?
-
mette le ' '
M.
http://docs.joomla.org/API16:JDatabase/nameQuote
-
ma con il mysql_real_escape_string sarei protetto? perchè io non so tutti i metodi di violazione di un sito
$id=mysql_real_escape_string($_GET['id']);
$db =& JFactory::getDBO();
$query = "
SELECT ".$db->nameQuote('pri_foto')."
FROM ".$db->nameQuote('#__chronoforms_pri_foto')."
WHERE ".$db->nameQuote('cf_user_id')." = ".$db->quote($id).";
";
$db->setQuery($query);
$result = $db->loadResult();
-
perchè io non so tutti i metodi di violazione di un sito
---------------------------------------------------------------------------
non esistono metodi di violazione di un sito. Esiste l'abusare delle cose scritte malamente da qualcuno.
Conoscendo php e mysql sei in grado di sapere cosa passa da un mysql_real_escape_string
...il meccanismo te l'ho già spiegato sopra.
scusa ma interrompo quì ..non credo di riuscire ad esserti utile più di così ;)
M.
-
ok grazie