<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux, PHP, MySQL, Windows, C# &#187; mysqli</title>
	<atom:link href="http://www.massimo-caselli.com/tag/mysqli/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.massimo-caselli.com</link>
	<description>Articoli, news e pillole sul mondo LAMP e l&#039;opensource. Pillole di C#</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:36:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Potenziale SQL Injection con AdoDB e driver mysqli</title>
		<link>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/</link>
		<comments>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 21:59:42 +0000</pubDate>
		<dc:creator>maxgrante</dc:creator>
				<category><![CDATA[Apache, Webserver]]></category>
		<category><![CDATA[MySQL, DB Server]]></category>
		<category><![CDATA[Opensource World]]></category>
		<category><![CDATA[PHP il turbo nel web]]></category>
		<category><![CDATA[adodb]]></category>
		<category><![CDATA[adodb mysqli]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[mysqli]]></category>
		<category><![CDATA[sql injection]]></category>

		<guid isPermaLink="false">http://www.massimo-caselli.com/?p=156</guid>
		<description><![CDATA[[SEGNALO CHE HO SCOPERTO QUESTA COSA DA POCO E LIMITANDOMI AD ALCUNI TEST E PROVE VELOCI MA REALI, PERCUI OGNI EVENTUALE APPROFONDIMENTO/SMENTITA ETC... E' BEN ACCETTO] Segnalo una problematica di sicurezza abbastanza importante per coloro che utilizzano adodb utilizzando il driver mysqli (le nuove funzioni di connessione con mysql native in php 5). In sostanza [...]]]></description>
			<content:encoded><![CDATA[<p>[SEGNALO CHE HO SCOPERTO QUESTA COSA DA POCO E LIMITANDOMI AD ALCUNI TEST E PROVE VELOCI MA REALI, PERCUI OGNI EVENTUALE APPROFONDIMENTO/SMENTITA ETC... E' BEN ACCETTO]</p>
<p>Segnalo una <strong>problematica di sicurezza abbastanza importante</strong> per coloro che utilizzano <strong><a title="Adodb" href="http://adodb.sourceforge.net/" target="_blank">adodb </a>utilizzando il driver mysqli</strong> (le nuove funzioni di connessione con <a target="_blank" href="http://www.mysql.com">mysql</a> native in <a target="_blank" href="http://www.php.net">php</a> 5).</p>
<p>In sostanza le nuove funzioni mysqli consentono mediante la seguente funzione: <a title="mysql multi query" href="http://it.php.net/manual/en/mysqli.multi-query.php" target="_blank">mysqli_multi_query</a> di poter <strong>eseguire più statement SQL in <a target="_blank" href="http://www.mysql.com">mysql</a></strong> come ad esempio:</p>
<p><em>SELECT * FROM TBL1 WHERE id = 1; DROP table TBL2;</em></p>
<p>Questa query utilizzando le <strong>vecchie librerie <a target="_blank" href="http://www.mysql.com">mysql</a> (es. mysql_connect) dava errore</strong>.<br />
La possibilità di <strong>eseguire più query SQL è supportata su <a target="_blank" href="http://www.mysql.com">mysql</a> 5.0.x anche da command line</strong>, non saprei se anche vecchie versioni lo consentivano.</p>
<p>Questo significa che se per esempio utilizziamo in <a target="_blank" href="http://www.php.net">php</a> una query del tipo:</p>
<p><em>$sql = &#8220;SELECT * FROM tbl1 WHERE id = $_GET['id']&#8220;; // (Premesso che venga come minimo fatto l&#8217;escape dei caratteri come &#8216; o &#8220;)</em></p>
<p>Possiamo rischiare che qualche burlone passi in GET il seguente valore:<br />
<em>&#8220;1; DROP TABLE tbl2;&#8221;</em><br />
Il che comporterebbe che l&#8217;SQL eseguito sia:</p>
<p><em>SELECT * FROM TBL1; DROP table TBL2;</em></p>
<p>Di fatto quindi con AdoDB con driver mysqli, la seconda query viene effettivamente eseguita.</p>
<p>Diventa quindi <strong>essenziale fare un controllo sull&#8217;input dell&#8217;utente per $_GET['id']</strong>. Ad esempio verificando che sia un numero intero.</p>
<p><strong>La soluzione più rapida è quella di cambiare la connect di AdoDB dicendogli di usare il driver <a target="_blank" href="http://www.mysql.com">mysql</a></strong> anziché mysqli, la soluzione migliore e da fare comunque resta <strong>in ogni caso il filtraggio di tutti i dati in input.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.massimo-caselli.com/2008/12/29/sql-injection-con-adodb-estensione-mysqli/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

