<?xml version="1.0" encoding="UTF-8"?>
<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>WebDev &#187; Drošība</title>
	<atom:link href="http://webdev.gold.lv/tag/drosiba/feed/" rel="self" type="application/rss+xml" />
	<link>http://webdev.gold.lv</link>
	<description>Dažādi pieraksti par dažādām lietām</description>
	<lastBuildDate>Wed, 07 Jan 2009 17:27:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Drošības pamati web-lapās</title>
		<link>http://webdev.gold.lv/2008/10/drosibas-pamati-web-lapas/</link>
		<comments>http://webdev.gold.lv/2008/10/drosibas-pamati-web-lapas/#comments</comments>
		<pubDate>Fri, 24 Oct 2008 15:17:32 +0000</pubDate>
		<dc:creator>M</dc:creator>
				<category><![CDATA[Drošība]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[injekcija]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[xss]]></category>

		<guid isPermaLink="false">http://webdev.gold.lv/?p=7</guid>
		<description><![CDATA[Piedāvāju nelielu aprakstu par populārākajām web-lapu ievainojamībām un padomus kā izvairīties no tām.
SQL injekcijas
Ja dati pirms to saglabāšanas datu bāzē netiek pareizi apstrādāti, tad ļaundaris var injicēt papildus nosacījumus SQL pieprasījumos, kā rezultātā ir iespējams nolasīt/labot/dzēst jebkurus datus datu bāzē. Vairāk par SQL uzbrukumiem &#8211; SQL Injection Cheat Sheet.
Lai izvairītos no SQL injekcijām, visi dati [...]]]></description>
			<content:encoded><![CDATA[<p>Piedāvāju nelielu aprakstu par populārākajām web-lapu ievainojamībām un padomus kā izvairīties no tām.</p>
<p><strong>SQL injekcijas</strong><br />
Ja dati pirms to saglabāšanas datu bāzē netiek pareizi apstrādāti, tad ļaundaris var injicēt papildus nosacījumus SQL pieprasījumos, kā rezultātā ir iespējams nolasīt/labot/dzēst jebkurus datus datu bāzē. Vairāk par SQL uzbrukumiem &#8211; <a href="http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/">SQL Injection Cheat Sheet</a>.</p>
<p>Lai izvairītos no SQL injekcijām, visi dati pirms to ievietošanas SQL pieprasījumā ir jāapstrādā ar funkciju <a href="http://lv.php.net/mysql_real_escape_string">mysql_real_escape_string</a>.</p>
<p><strong>XSS &#8211; Cross Site Scripting</strong><br />
Viena no biežākajām ievainojamībām web-lapās ir tieši XSS &#8211; JavaScript koda injekcija, kas ļauj vizuāli izmainīt web-lapu, pārvirzīt tās apmeklētājus vai iegūt informāciju par tiem, nolasīt <em>cookie</em> datus un izmantot visas pārējās JavaScript iespējas. Piemēram, slikti aizsargātā lapā, apmeklētājs var pievienojot komentāru norādīt savu vārdu kā &lt;script&gt;window.location=&#8221;http://someplace.com&#8221;;<br />
&lt;script&gt;, kā rezultātā pie komentāru apskates visi apmeklētāji tiks pārsūtīti uz citu lapu. Par dažādiem XSS piemēriem var palasīties iekš <a href="http://ha.ckers.org/xss.html">http://ha.ckers.org/xss.html</a>. Tāpēc visi dati pirms izvadīšanas web-lapā ir jāapstrādā vismaz ar funkciju <a href="http://lv.php.net/htmlentities">htmlentities()</a>.</p>
<p><strong>Aizsardzība pret nozagto sesiju lietošanu</strong></p>
<p>Parasti pēc sesijas izveidošanas lietotāja pārlūkprogrammā tiek saglabāts cookie ar sesijas ID, kas pēc noklusējuma ir vienīgais veids lai noteiktu, ka tieši šim lietotājam atbilst konkrētā sesija ar visu tajā esošo informāciju. Ja ļaundarim izdodās uzzināt šo sesijas ID (kas var būt izdarāms gan ar SQL injekciju, gan, visbiežāk, ar XSS, gan jebkādā veidā nolasot cookie failus no lietotāja datora), tad viņš norāda tādu pašu ID savā pārlūkprogrammā un iegūst no dotās web-lapas to pašu, ko cietušais lietotājs, piemēram, pieeju pie administrēšanas paneļa vai profilu forumā.</p>
<p>Pilnībā izslēgt jebkādu iespēju nozagt sesijas ID un/vai jebkurus citus cookie datus ir gandrīz neiespējami un tāpēc ir jāparūpējas par aizliegumu izmantot vienu sesiju vairākos datoros. Populārākais un, iespējams, labākais risinājums ir pie sesijas izveidošanas (piemēram, pēc ielogošanās formas) saglabāt lietotāja IP adresi un pie katras nākamās lapas ielādes to salīdzināt ar faktisko IP adresi, un gadījumā, ja abas IP nesakrīt, izdzēst sesiju.</p>
<p><strong>Paroļu šifrēšana</strong></p>
<p>Pašsaprotami, ka paroles nedrīkst tikt glabātas tīrā teksta veidā un tām ir jābūt šifrētam vismaz ar MD5 algoritmu, bet arī tas nav drošs risinājums, jo izmantojot brute-force metodi, pat septiņu simbolu paroles atminēšanai nav nepieciešams vairāk par dažām stundām uz viduvējas veiktspējas datora.</p>
<p>Tādēļ parolēm ir obligāti jāpievieno tā saucamais <a href="http://en.wikipedia.org/wiki/Salt_(cryptography)"><em>salt</em></a>, kas ir papildus simboli pie paroles un padara to garāku lai padarītu paroles atminēšanu neiespējamu gadījumos, kad ļaundarim ir zināms tikai paroles <em>hash</em>. Piemērs:</p>

<div class="wp_syntax"><div class="code"><pre class="php php" style="font-family:monospace;"><span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <span style="">'qwerty'</span>; <span style="color: #666666; font-style: italic;">// Lietotāja ievadītā parole</span>
<span style="color: #000088;">$salt</span> <span style="color: #339933;">=</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$username</span><span style="color: #339933;">.</span><span style="">'#!'</span><span style="color: #009900;">&#41;</span>; <span style="color: #666666; font-style: italic;">// SALT no lietotāja vārda un divi papildus simboli</span>
<span style="color: #000088;">$password</span> <span style="color: #339933;">=</span> <span style="color: #990000;">MD5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$password</span><span style="color: #339933;">.</span><span style="color: #000088;">$salt</span><span style="color: #009900;">&#41;</span>; <span style="color: #666666; font-style: italic;">// Galējais paroles hash</span></pre></div></div>

<p>Rezultātā ļaundarim ir jāatmin hash`a vērtību nevis vienkāršai 6 simbolu parolei, bet nu jau 26 simbolu parolei, kas ir praktiski neiespējami bez pilnas pieejas pie visas datu bāzes un web-lapas izejas koda. </p>
]]></content:encoded>
			<wfw:commentRss>http://webdev.gold.lv/2008/10/drosibas-pamati-web-lapas/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
