18 Oct

Kvällningen

Min senaste skapelse: pastie.se(cure)

Min senaste skapelse: pastie.se(cure)

Tröttnade på att inte hitta någon vettig pastebin med stöd för det jag vill att en sådan skall ha. Så skapade en egen med följande funktioner. Självklart listade på engelska för att det skall låta så flashigt som möjligt:

  • Force SSL.
  • AES encryption and decryption, completely client-side.
  • Time limitation
  • Inline syntax-hilighting
  • Drag n Drop file to paste. (Just drag a source file into the code editor)
  • Fullscreen mode
  • Download source file

Besök, prova och använd på https://pastie.se/


22 Sep

Under eftermiddagen

Vad delar du ut? IT-säkerhet i hemmet

Vad delar du ut? IT-säkerhet i hemmet

Teknikutvecklingen i går väldigt fort och i Sverige är vi snabb på att ta till oss ny teknik. I våra hem har vill allt fler enheter som kan och vill koppla upp sig. Jag har själv ett antal enheter med anslutningsmöjligheter. I bara mitt hem finns just nu följande nätverksanslutna enheter:

  • En mobiltelefon
  • Två bärbara datorer
  • Ett Playstation 3
  • En router med NAS & DLNA
  • En skrivare
  • En surfplatta

I samma veva har våran anslutning till internet moderniserats. Allt fler har fiberanslutningar i hemmet med flertalet TP-jack i lägenheten (som bilden antyder har jag nio stycken själv) och ofta med flera IP adresser. Frågan är om konsumenterna har tillräckligt med kunskap för att hantera nätverket och alla dess enheter. Vad ställer det för krav på användarna? Måste de veta vad NAT, brandväggar och switchar är?

Mentaliteten som ofta dominerar kan summeras med två meningar. "Bara det fungerar" och "jag kan själv". Jag tror och vet att inte många tänker sig för och frågar sig själva "vem får tillgång till den här resursen nu?" när de stoppar in en enhet i väggen.

Jag tror och vet att inte många tänker sig för och frågar sig själva "vem får tillgång till den här resursen nu?" när de stoppar in en enhet i väggen.

Detta lade grunden till mitt lilla experiment. Någon måste göra det, någon måste berätta om det. Om ingen gör det lämnas det åt skuggsidan på internet och ljusskygga individer med tvivelaktiga avsikter behåller kunskapen för sig själva.

Så jag bestämde mig för att kika på vad mina grannar delar ut på port 80. Självklart finns det resurser som delas ut på andra portar än denna men avsikten med experimentet var bara att ta ett stickprov. Så jag anslöt datorn direkt i uttaget i väggen, utan någon annan enhet, exempelvis router emellan. Därefter öppnade jag upp Terminal.app på min Mac och körde följande:

nmap --open -p80 `netstat -nr | grep '^default' | awk '{ print $2 }' |sed 's/[0-9]*$/0\/24/'`

Efter en liten stund fick jag resultatet som inte var särskilt häpnadsväckande eller oväntat. Det är en massa enheter som delar ut saker på port 80! Öppnade min webbläsare och gick igenom dem. Resultatet vart följande, det här är alltså enheter som delas rakt ut på internet:

Typ Antal Kommentar
Skrivare 5 ...
Hemmarouter 2 Remote WebUI
TV-box 1 Dreambox remote WebUI
NAS 3 Remote WebUI
Termostat 1 ...
Okänd 8 ?

Flertalet av enheterna hade inget lösenord, utan var helt öppna resurser. En av de mest intressanta kanske var TV-boxen som var en Dreambox. Den gav mig möjlighet att se vad som tittades på just nu, ladda upp en film och streama till TVn, byta kanal och starta en nätverksström till mig med det som för tillfället visades.

Jag tror vi kan komma överens om att konsumenter behöver antingen bli bättre på IT-säkerhet eller lämna över installationer av nätverk och nätverksanslutna enheter till människor som kan.

Frågan nu är hur vi tacklar detta? Vem bär ansvar och vad kan göras för att höja medvetenheten? Vilka vet att en stor del av svenska konsumenters enheter delar privata resurser rakt ut på internet i form av bilder, film, musik, dokument, möjlighet att kika på deras TV eller inspektera deras internet-trafik.


16 Sep

Kvällningen

Penetrationstesta din webbplats med Detectify

Penetrationstesta din webbplats med Detectify

För ett litet tag sedan slog Detectify upp portarna för BETA-användare. Tjänsten är byggd av några svenskar och de beskriver tjänsten med följande ord:

"Detectify analyzes the level of security of your website — Simple to use and understand."

Efter att ha fått en BETA-nyckel så gav jag tjänsten en testrytt med bloggen i skottgluggen. Min spontana upplevelse var att tjänsten håller mycket hög kvalité och att det här kan bli något riktigt bra när det kommer ut ur BETA-fasen.

Gränssnittet är enkelt och snyggt. Funktionaliteten är ganska begränsad nu i BETA-perioden men lär förbättras med tiden. Efter att ha verifierat att man är ägaren av en webbplats listas siten på ens "dashboard". Från vilken man kan bland annat kan begära en scanning av domänen.



Som ni ser har jag där scannat timtux.net och ådragit mig några säkerhetsvarningar. Tack och lov hittade Detectify inte några sårbarheter.




De flesta av varningarna var relaterade till mina google-apps tjänster som jag använder. Men några matnyttiga hittades.




Så vad väntar ni på? Gå till https://www.detectify.com/ och begär en BETA-nyckel. Jag har kommit över fem stycken som listas nedanför. Först till kvarn! Skriv gärna en kommentar om ni använder er av dem så jag kan stryka dem från siten.

Detectify BETA-nycklar:

TIMTUX1 TIMTUX2 TIMTUX3 TIMTUX4 TIMTUX5

Vad tyckte du om tjänsten? Hur säkerhetstestar du dina siter i dagsläget? Gör din åsikt hörd nedanför.


16 Sep

På morgonen

Att använda DELETE & PUT på webben

Att använda DELETE & PUT på webben

REST-arkitekturen använder sig av (minst) fyra stycken HTTP-metoder. Problemet när man gör en webbsida som använder sig av ett REST-backend är att två av dessa: PUT och DELETE inte finns med i HTML-specifikationen.


  • För att skapa en resurs (ex. bloggpost) används POST
  • För att hämta en resurs används GET
  • För att uppdatera en resurs används PUT
  • För att ta bort en resurs används DELETE

Vill vi ta bort den här bloggposten exempelvis, skickar vi DELETE /posts/8 till servern så tas den bort.

Men som sagt, de två som röda, PUT & DELETE finns inte med i HTML-specifikationen och därför stödjer ingen webbläsare dessa. Problemet blir således att vi inte kan uppdatera eller ta bort våra resurser, i detta fallet bloggposter.

Update: 7:15 <@marvi> timtux: Angående din blogg: PUT och DELETE [...] är implementerade i de flesta läsare genom XMLHttpRequest (aka. Ajax). Problemet med att använda dem är i stället att måga proxy-servrar och brandväggar filtrerar bort dem

För att lösa detta gjorde jag som de flesta programmerare skulle och borde göra. Jag började googla och kolla på vad andra ramverk och applikationer gjorde. Att bara komma upp med en lösning utan att först undersöka redan befintliga känns väldigt dumt och som något som mer passar i en laboration.

Lösningen som många implementerade, däribland Rails-projektet som jag håller högt är skicka med ett gömt input fält med name="_method" och ex. value="DELETE".

Frågan är då hur vi smidigt implementerar detta. Vi vill ju exempelvis inte behöva göra ett formulär för varje länk för att ta bort en bloggpost. Lösningen blev att skapa ett gömt formulär som alltid finns med på vår site.

<body>
<form name="method_helper" action="/" id="method_helper" method="post" style="visibility: hidden; display: none">
    <input type="hidden" name="_method" value="DELETE">
</form>
[...]
</body>

Sen använder vi oss av javascript för att skicka exempelvis en DELETE /posts/8 till servern. Observera att detta kräver jQuery och att vi får en fin confirm-ruta på köpet - vi vill ju inte råka ta bort något av misstag.

function send_http_delete(url) {
    event.preventDefault();

    // Form action
    $("form[name='method_helper']").attr('action', url);
    $("form[name='method_helper']").get(0).setAttribute('action', url);

    // Method
    $("form[name='method_helper'] input[name='_method']").val('DELETE')

    // Submit
    if (confirm('Are you sure?')) {
        $("form[name='method_helper']").submit();
    }
}

För att nu göra requesten med exempelvis hjälp av <a> elementet. Så gör vi bara följande:

<a href="#" onclick="send_http_delete('/posts/8')">DELETE</a>

För att få detta rätt på serversidan så får vi såklart se till att ta hänsyn till $_POST['_method']

$method = 'GET';

if (in_array($_SERVER['REQUEST_METHOD'], array('GET', 'POST', 'PUT', 'DELETE'))) {
    $method = $_SERVER['REQUEST_METHOD'];
}

if (isset($_POST['_method']) && in_array($_POST['_method'], array('DELETE', 'PUT'))) {
    $method = $_POST['_method'];
}

Det var allt för denna posten. Som vanligt så finns hela min bloggs kod inklusive databas att ladda ned på /download. Har du haft samma problem? Hur har du löst det? Kommentera nedan!


15 Sep

Mitt i natten

Ladda ner min blogg(mjukvara)!

Ladda ner min blogg(mjukvara)!

Det börjar ta sig här efter en dags utveckling. Tänker inte lägga upp bloggen på GitHub innan koden är ur utvecklingsfasen.

Tills dess får ni gärna ladda ner koden här. Länken tar ett snapshot av hela siten inklusive databas (sqlite) och packar ihop till en Zip. Ni har användarnamn och lösenord med där också, dock hashat. ;-)

Kommentarer på projektet tas varmt emot i kommentarsfältet nedanför.


15 Sep

Mitt i natten

Om Tim

Om Tim

Mitt namn är Tim och jag jobbar som (backend) webbutvecklare i Stockholm. Visst är det roligt att arbetet ofta är en stor del av ens identitet? Så stor att man oftast nämner vad man jobbar som redan första gången man träffar någon. Strax efter man kallpratat om vädret .Förutom mitt jobb så brinner jag för programmering, IT-säkerhet, matlagning, reverse engineering och flugfiske.

Om ni av någon anledning vill höra av er till mig så finns mina kontaktuppgifter längst ner till höger i sidfoten.