Monthly Archives: August 2009

Képregény a SmartScreen filterről

Még régebben futottam bele az alábbi oldalba, elég tanulságos volt. Hány embert ismertek, aki azonnal bedőlne neki és nincs olyan szoftver vagy beállítás a gépén, ami megvédené?

Egy kereső találati listában egy ígéretes linkre kattintva ezzel találtam szembe magam:

SpywareRemover_00

Hmm, ez a weboldal próbálkozik valamivel, csak éppen nem sikerül neki, talán mert nem vagyok admin a gépen, ezért kap Access is denied hibaüzenetet. Debuggolni épp nem volt kedvem, ezért nyomtam az OK-ra, amitől a weboldal őrült villódzásba kezdett:

SpywareRemover_01

Windows Security Alert, hűha, ennek aztán a fele se tréfa! 🙂 Ugyan ordít róla, hogy ez egy sima weboldal, azért kipróbáltam, hova lehet kattintani. Gyakorlatilag mindegy, hova kattint az áldozat, úton a segítség, csak az OK-ra kell kattintanunk és máris töltődik lefelé az ingyenes vírusirtó.

SpywareRemover_02

Mindössze annyi dolgunk van, hogy kattintsunk a RUN vagy OPEN gombokra, amit “nyugodtan” megtehetünk, hiszen a weboldal maga mondja, hogy a fájl digitálisan alá van írva (ez ugye fontos, ma már mindenki hallott róla) és egyébként is 100% (talán több is), hogy vírus, reklám és képprogram mentes. Akár elhisszük, akár nem (ne tegyük), csak az OK gombra lehet kattintani, hiszen modális dialógus ablakról van szó.

SpywareRemover_03

Már töltődne is lefelé, a csábítóan hangzó bonuspromooffer szervere villámgyors.

SpywareRemover_04

Annyira azért nem voltam kíváncsi, hogy a gépemre engedjem a gonoszt, ezért természetesen Cancelt nyomtam még a letöltés kezdete előtt.

SpywareRemover_05

Meg is kaptam a fejmosást, hogy ilyet nem szabad ám tenni, mert zizis marad a gépem. A változatosság kedvéért itt már van OK és Cancel gomb is, meg hozzá egy nagy kérdőjel, amit összességében úgy értelmezhetünk, hogy “Felfogtad ??”. Akár igen, akár nem, azt azért nem árt tudnunk, hogy akár a registry vagy a fájl rendszerünk is tönkremehet, ami persze a világvégét jelentheti.

SpywareRemover_06

Na még egyszer, hátha nem értetted:

SpywareRemover_07

És hogy tudd, mekkora bajban vagy, a “Windows” máris ordít, hogy fertőzött a géped. Szép lassan végig is szkennel mindent, villognak a mappák, a fájlok, és csak úgy dől a lista a gépünkön tomboló gonosz fenyegetésekről:

SpywareRemover_08

Van belőlük összesen 527, méghozzá scrollozható listában! Az nem kevés ám, így aztán megint felajánlja a “jóságos” weboldal, hogy ad nekünk ingyenes csodapapit, amire azonnal szükségünk van, még mielőtt megsérülnének a fájljaink!

SpywareRemover_09

Ekkor próbáltam végig, hogy hova lehet kattintani az oldalon. Amikor épp nincs fent egy modális dialógus ablak, akkor lelkesen “szkenneli” a gépet és micsoda meglepetés, tonnányi fertőzött és fertőző fájlt talál. Ilyenkor lehet kattintgatni az oldalon, minden link és menüpont “működik”, vagy közvetlenül a fájl letöltésre vezet, vagy ide.

SpywareRemover_10

És ha még itt sem akarjuk letölteni az ingyenes programot, akkor elvisznek a krampuszok:

SpywareRemover_11

Ekkor fogyott el az aznapra rendelt játékidőm és kíméletlenül benyomtam a böngésző Smart Screen filterét, ami egy csapásra megoldotta a modális dialógusablakok és lelőhetetlen JavaScript ciklusok problémáját.

SpywareRemover_12

Közben végig azon gondolkodtam, hogy vajon az ismerőseim közül hányan dőlnének be ennek az amúgy igen profin elkészített oldalnak miközben rendszergazdai jogosultságokkal szaladgálnak a neten.

Advertisements

SEO szerszámosláda

Épp újratelepítem a gépemet – természetesen Windows 7-tel – és megint vadászhatom össze a kedvenc Firefox bővítményeimet.

SEO-Firebug Firebug

Letöltés. Remélem senkinek nem kell bemutatni, kötelező darab annak ellenére, hogy az IE8 már beépítetten tartalmaz hasonlót (Developer Tools). HTML és CSS környékén hasonló a tudásuk, Firebugban azonban sokkal jobban tudom monitorozni a hálózati forgalmat, az időket és a HTTP fejléceket.

A FF 3.5-ben megjelent Automatically start Firefox in a private browsing session opciót nem szabad bekapcsolni, mert akkor a Firebug minden oldalletöltéskor eltűnik és nem mutatja a forgalmat. Szóval döntsük el, hogy éppen pornót nézünk vagy forgalmat elemzünk 🙂

Google Page SpeedGoogle Page Speed

Letöltés.  Ez az egyik új kedvencem, a Firebugba épül be és bár kicsit lassú és gyakran kell újrafuttatni, hasznos tanácsokat ad a keresőoptimalizáláshoz. A kliens oldali cache konfigurálásához nagyon hasznos, add tippeket a képek, a CSS és a JavaScript optimalizálásához is, sőt azonnal fel is ajánlja ezeknek az erőforrásoknak az optimalizálását. Jól használható önmagában a doksija is, tömör és lényegre törő.

Tud timeline-t is, amiben a Firebugnál részletesebb bontásban jelenik meg, hogy a böngésző éppen mivel vacakolt.

SEO-SenSEO SenSEO

Letöltés. A változatosság kedvéért ez is a Firebugot bővíti ki méghozzá oly módon, hogy miután letöltöttünk egy oldalt, megmondja, hogy mit lát belőle egy keresőmotor, sőt megadhatunk neki egy kereső kifejezést, amire ő megmondja, hogy az oldal egyes részei (title, meta description stb.) mennyire felel meg neki.

Elemzi az oldal HTML kódját, azon belül nem csak a fejlécet, de a címsorokat is, továbbá a domaint és a path-t, az eredményt pedig egy színes-szagos HTML oldal formájában képes exportálni.

Live HTTP Headers Live HTTP Headers

Letöltés. Firebugtól független Firefox bővítmény, amely megmutatja a teljes HTTP forgalmat. Azt szeretem benne, hogy egy külön ablakban folyamatosan naplóz, így kiválóan látszanak az átirányítások.

Másik kedvencem benne a Replay funkció, amivel újrajátszhatom a kérést, természetesen előtte tetszőlegesen módosítva a HTTP fejléceket.

SEO-Tamper_Data Tamper Data

Letöltés. Ez a kis addon azt teszi lehetővé, hogy még az előtt belenyúljunk a HTTP kérésbe, hogy a böngésző elküldené azt a szerverre. További hasznos funkciója, hogy beépítetten tartalmaz egy rakás biztonság tesztelő funkciót, SQL injection, cross-site scripting és számok tesztelésére.

IIS 7 Search Engine Optimization Toolkit

Letöltés. Na ez kivételesen nem a Firefoxba, hanem az IIS 7-be beépülő egyik legújabb bővítmény, ami gyakorlatilag ugyanúgy végigjárja a webhelyünket, mint ahogy egy robot tenné, majd egy jelentésben összefoglalja, hogy mit kellene javítanunk: hol vannak törött linkek, hol hiányzik egy title vagy egy meta description, hol nem releváns egy hivatkozás szövege, melyek azok az oldalak, amelyekre több helyről máshogyan hivatkozunk stb.

Egyebek

Visual Round Trip Analyzer (VRTA)

Letöltés. Ez igencsak low-level elemzésre használatos jószág, a Netmonnal együttműködve mondja meg, hogy mi történik a hálózaton, miközben a böngésző előtt csak bambán vár a felhasználó. Kereső optimalizálásra nem jó, de a hálózati bottleneckek kiderítésére igen, ráadásul van benne néhány szabály is, ami alapján osztályozza a webhelyünk teljesítményét.

Fiddler

Letöltés. Ő sem igazán SEO elemző, inkább a nyers hálózati forgalmat célszerű vele nézegetni. Írtunk már róla korábban, Dávid Zoli egy hekkelős bevezető cikket, én pedig a JSON és a localhost használatáról.

FireShot

Letöltés. Ez a ráadás, ami leginkább kilóg a sorból: képernyőfotók készítésére jó, tökéletesen kezeli a képernyőből kilógó nagy méretű oldalakat is. Tavaly írtam egy Webpage Capture nevű programot, ami ugyanezt csinálja IE alatt, akkor kaptam a tippet, hogy érdemes kipróbálni a FireShotot.

 

Ti mit használtok még?

ASP.NET for Mobiles

Tapasztalatom szerint kevesen használják és még kevesebben tudják, hogy ASP.NET platformon nem csak asztali, hanem mobil böngészőkre is lehet webalkalmazást fejleszteni.

A rendszer alapja, hogy az ASP.NET rendelkezik egy olyan adatbázissal, ami tartalmazza a mobil eszközök képességeit, ami persze csak akkor működik jól, ha az új eszközök megjelenésével ez az adatbázis is frissül. Korábban a Microsoft ún. Device Update-eket adott ki, ezekből azonban 2003. decemberi az utolsó, nem is érdemes bajlódni vele.

Az ASP.NET 2.0 megjelenése óta azonban ennek az adatbázisnak a kezelése sokkal egyszerűbb, mindössze egy .browser kiterjesztésű XML fájlt kell az App_BrowsersDevices mappába elhelyeznünk. Ilyen Mobile Device Browser File-ból itt érdemes a legfrissebbet keresnünk, ezt a projectet a Live csapat hozta létre és tartja karban: http://mdbf.codeplex.com/

A hivatalos ASP.NET for Mobiles oldalon egyébként nem sok infót találunk erről a területről, de a hírek szerint az ASP.NET 4.0-ban ez változni fog, hiszen maga a rendszer is jelentősen módosul:

  • A System.Web.Mobile.dll összes osztálya elavult, azaz obsolete lesz.
  • Drasztikusan megváltozik a fent említett browser fájl, a mobil és a desktop böngészők leírásai is frissülnek, a régiek pedig (pl. IE 6 előttiek) kikerülnek.
  • A tervek szerint a böngésző definíciók leírása provider alapú lesz, tehát valószínűleg könnyebben lesz bővíthető.
Technorati-címkék: ,

HttpRequestValidationException kezelése

Az ASP.NET 1.1 megjelenése óta sokan belefutottak már az alábbi hibaüzenetbe, amikor query string paraméterbe vagy űrlap mezőbe HTML karakterek kerültek:

A potentially dangerous Request.QueryString value was detected from the client (k="<br />").

Azt le se írom, hogyan lehet ezt az ellenőrzést kikapcsolni, hiszen biztonsági okokból van ott (meg aztán amúgy is szerepel az oldalon a Descriptionben), inkább íme egy global.asaxos megoldás, amivel barátságos hibaüzenetet jeleníthetünk meg egy másik oldalon, akármelyik oldalon is keletkezik a hiba:

  private void Application_Error( object sender, EventArgs e )
  {
    Exception ex = this.Server.GetLastError();

    if( ex is HttpRequestValidationException )
    {
        this.Response.Redirect( "~/Error/RequestValidationError.aspx", true );
    }
  }

Meg lehet próbálni ugyanezt egy-egy oldalon lokálisan a Page_Error metódusban implementálni, de a tapasztalat azt mutatja, hogy ez nem mindig vezet sikerre.

Időzített shutdown

Hétvégén megint áramszünet volt nálunk, szerencsére ezúttal előre szóltak róla. Ilyenkor mindig leállítjuk a szervereket, hogy a visszakapcsolási tranziensek több tápegységet ne tegyenek tönkre. A Balaton mellett azonban nem volt sem kedvem, sem lehetőségem ezzel foglalkozni, ezért előre kellett gondolkodnom.

Így aztán még a szabadságom előtt elővettem az érintett szervereken a Task Schedulert és beállítottam az alábbi parancs végrehajtását ütemezve:

C:WindowsSystem32shutdown.exe /p /f /d p:0:0

Kép átméretezése arányosan, szépen

Képek átméretezéséhez lehet használni az Image.GetThumbnailImage metódust, aminek az egyik baja, hogy nem túl szép az átméretezett eredmény, a másik, hogy vadul képes ExternalExceptionöket és OutOfMemoryExceptionöket dobálni, ha nem tetszik neki az eredeti kép. Van más lehetőség is.

Használhatjuk például a Graphics.DrawImage metódust, ráadásul a Graphics objektumnak még az InterpolationMode tulajdonságát is be tudjuk állítani:

  private static Image ResizeImage( Image originalImage, int maxWidth, int maxHeight )
  {
    if( originalImage.Width == maxWidth && originalImage.Height == maxHeight )
    {
        return originalImage;
    }

    float ratio;
    float ratioWidth;
    float ratioHeight;

    ratioWidth = (float) maxWidth / (float) originalImage.Width;
    ratioHeight = (float) maxHeight / (float) originalImage.Height;
    ratio = ratioHeight < ratioWidth ? ratioHeight : ratioWidth;

    int destWidth = (int) ( originalImage.Width * ratio );
    int destHeight = (int) ( originalImage.Height * ratio );

    Bitmap bitmap = new Bitmap( destWidth, destHeight );
    using( Graphics g = Graphics.FromImage( (Image) bitmap ) )
    {
        g.InterpolationMode = InterpolationMode.HighQualityBicubic;
        g.DrawImage( originalImage, 0, 0, destWidth, destHeight );

        return (Image) bitmap;                
    }
  }

Ha a bemenetünk stream, akkor abból az Image.FromStream metódussal lehet Image objektumot készíteni. Ha byte[], akkor még egy MemorySteam is kell és persze minden IDisposable:

    using( MemoryStream originalStream = new MemoryStream( originalContent ) )
    {
        using( Image originalImage = Image.FromStream( originalStream ) )
        {
            using( Image resizedImage = ResizeImage( originalImage, MaxWidth, MaxHeight ) )
            {
                using( MemoryStream resizedStream = new MemoryStream() )
                {
                    resizedImage.Save( resizedStream, ImageFormat.Jpeg );
                    byte[] resizedContent = resizedStream.ToArray();
                }
            }
        }
    }

Tapasztalatom szerint a 100 pixel környékére kicsinyített fényképeknél a JPEG és a PNG hasonló minőséget produkál, miközben a JPEG fájl lényegesen kisebb, nem ritkán tízszeres különbség is van.