<?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>Tara Andrei &#187; cross site scripting</title>
	<atom:link href="http://www.andreitara.com/tag/cross-site-scripting/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreitara.com</link>
	<description>a developer&#039;s blog</description>
	<lastBuildDate>Sun, 18 Jul 2010 17:46:20 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>XSS -cross site scripting</title>
		<link>http://www.andreitara.com/2008/11/xss-cross-site-scripting/</link>
		<comments>http://www.andreitara.com/2008/11/xss-cross-site-scripting/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 19:10:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[XSS]]></category>
		<category><![CDATA[web app]]></category>
		<category><![CDATA[cross site scripting]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.andreitara.com/?p=28</guid>
		<description><![CDATA[
Pentru cei care nu stiu  cross site scripting-ul est o vulnerabilitatea de securitate ,specifica aplicatiilor web, ce permite injectare de cod distrugator in paginile web vizualizate de catre utilizator. Ea este o vulnerabilitate client side adica nu are efect propriu-zis asupra informatie de pe server ..ati putea spune ca nu este un pericol din [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.andreitara.com/wp-content/uploads/2008/11/xss.png"><img class="size-medium wp-image-29 aligncenter" title="xss" src="http://www.andreitara.com/wp-content/uploads/2008/11/xss-300x200.png" alt="" width="300" height="200" /></a></p>
<p>Pentru cei care nu stiu  cross site scripting-ul est o vulnerabilitatea de securitate ,specifica aplicatiilor web, ce permite injectare de cod <span style="font-size: x-small;">distrugator</span> in paginile web vizualizate de catre utilizator. Ea este o vulnerabilitate client side adica nu are efect propriu-zis asupra informatie de pe server ..ati putea spune ca nu este un pericol din moment ce este client side dar sa ne imaginam urmatoare situatie : ce ar insemna daca pe site-ul unei  banci , pe una dintre pagini exista un fromular in care toti clientii sunt rugati sa isi introduca datele personale, iar infromatia se va trimite undeva in internet,..ei bine in acest caz este grav.</p>
<p>Pentru a rezolva problema a inputurilor nesecurizate am realizat utmatoarea <span id="more-28"></span>clasa in php cu o implementare simplificata mult.</p>
<blockquote><p>&lt;?php</p>
<p>class Secure {<br />
/**internals<br />
*<br />
*/<br />
var $data;<br />
var $notSecured=array();</p>
<p>/**Constructor<br />
*<br />
*/<br />
public function Secure(&amp;$data,$autosecure=true)<br />
{</p>
<p>$this-&gt;data=&amp;$data;<br />
if($autosecure==true)<br />
$this-&gt;secureInputs();</p>
<p>}<br />
/**<br />
* verify if the array is empty<br />
*/<br />
public function isEmpty()<br />
{</p>
<p>if(count($this-&gt;data)&lt;=0)<br />
return true;</p>
<p>foreach($this-&gt;data as $key=&gt;$value)<br />
{if(empty($value))<br />
return true;<br />
}</p>
<p>return false;<br />
}<br />
/**<br />
* secure all filds<br />
*/<br />
public function secureInputs()<br />
{</p>
<p>foreach ($this-&gt;data as $k =&gt; $v)<br />
{<br />
if($this-&gt;isNotSecured($k)==false)<br />
$this-&gt;data[$k]=htmlspecialchars($v, ENT_QUOTES);<br />
}</p>
<p>}<br />
/**<br />
* add key that is not secured<br />
*/<br />
public function addNotSecuredInputs(array $key)<br />
{<br />
$this-&gt;notSecured=$key;</p>
<p>}<br />
/**<br />
* check if input is one that that dosen&#8217;t have to be secured<br />
*/<br />
private function isNotSecured($key)<br />
{</p>
<p>for($i=0;$i&lt;count($this-&gt;notSecured);$i++)<br />
if(!strcmp($this-&gt;notSecured[$i],$key))<br />
return true;</p>
<p>return false;</p>
<p>}</p>
<p>}<br />
?&gt;</p></blockquote>
<p>Iata cum ar arata utilizarea acesti clase</p>
<blockquote><p>$sec=new Secur($_POST);</p></blockquote>
<p>dupa cum se vede am salvat mult munca, clasa putand fi utilizata ori de cate ori avem nevoie sa securizam inputurile.Ce s-ar intimpla daca de exmplu dorim ca anumite inputuri sa contina  cod html ??? Ei bine si problema acesta este rezolvabila cu mare usurinta</p>
<blockquote><p>$sec=new Secure($_GET,false);</p>
<p>$sec-&gt;addNotSecuredInputs(&#8221;nume_variabila_ce_contine_cod_html&#8221;);</p>
<p>$sec-&gt;secureInputs();</p></blockquote>
<p>Am ales o versiune minimala de implementare ce securizeaza doar cod html..voi reveni cu o versiune completa mult mai complexa ce securizeaza si  injectie sql generand rapoarte de securitate ( de exmplu se ia ip-ul utilizatorului cu ganduri necurate printre multe altele) &#8230;Oricum clasele de php pe care le mai postez din cand in cand pe blog sun cioturi din un farmawork al meu pe care intr-un final sper sa il aduc la stadiul unui cms..dar asta este o alta poveste. <img src='http://www.andreitara.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreitara.com/2008/11/xss-cross-site-scripting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
