Technische Blogs

view">: Login Destinations
view">

A while ago I decided it was easier for people who have an account on this site to get redirected to a kind of overview page which shows the latest content (kind of like the block on the front page but with some more options). So I googled and found a very easy way to do this, with Triggers and Actions, the Triggers module is part of the Drupal 7 core so I didn't have to bother with extra modules, it looked like perfect solution.

  1. Define an action which redirect the user to a certain page
  2. Connect the trigger "After a user logs in" to the action defined in step 1

Easy right? Until someone forgets his password!

 

Forgotten password

So I had this user who forgot her password, she used the password reset option on my website and got a nice email giving her a 'one time login link' (I'll get back to that). After a few days she told me she didn't get to the one time password change option but got redirected to the overview page. And when she navigates to her user profile she needs to enter the old (forgotten) password to change it.

Of course this is not how it was meant to be! I did the quick and dirty fix and changed her password and e-mailed this to her but still, this made me annoyed, people would always need my intervention if they forgot their password. No big deal on this site with a total of 5 user accounts but not a solution you want on a site with 500+ users.

 

Login Destinations

So I started using my good old friend Google again today and found this module: Login Destination. From the description this was exactly what I was looking for, giving multiple redirect options. After installing I went to configure it and it didn't really give me different options as triggers, login, registration and one-time login link where bundled in one check-box. It does allow for multiple rules and for rules for different user roles but it doesn't allow for a rule for one-time login and a separate rule for normal login. So my first reaction was 'close, but no cigar.'

Luckily I still took the effort of testing and to my very pleasant surprise the developers had actually thought about this part and the module actually first redirected to the password change option and only after saving the new password it redirected to overview page I created. This was exactly what I needed. Kuddos for the developers of this module.

 

One-time login links

To my surprise, before the user who has a problem with her password actually told me about it she had already used here 'one-time' login link several times! Of course I looked in to this. My first theory was they might only remove the one-time link after the password was changed by the user. So I created a test account, activated this and used the one-time link. Immediately after clicking the link I knew why it wasn't a one time link. It actually says so on the login screen, the link is valid for one month.

Even with my background in security I don't see this as high security risk since the link contains a 43 characters long randomly generated string and the user ID. The user ID is guessable, the string, you'll have to find a user with a reset link enabled and still valid and then guess the string, not very likely, not even with a lot of computers trying. What is a little more risk is if someone manages to get this link from a mailbox or browser history. So I would like to argue for a trigger on a password change which deletes the one-time link from the database since this would be the most secure option in my opinion.

view">: Hackers, Crackers en Scriptkiddo's
view">

Ik moet weer eens een stukje ergernis kwijt, dit keer over de term Hacker. Dit blogje is wel een beetje van een technische aard maar vooral bedoeld om eindelijk eens iets duidelijk te maken aan mensen die niet zo technisch zijn en het gaat eigenlijk over woorden en terminologie, niet de techniek, vandaar dat het toch een 'personal' blog is geworden.

Yeah

Definities

De media smijt te pas en te onpas met de term Hacker, maar eigenlijk halen ze meerdere termen door elkaar, een korte definitie van de verschillende termen:

  1. Hacker - Iemand die code in elkaar hacked of bestaande code hacked, dit is NIET het inbreken op computers, dit zijn mensen die programmeren, de mensen die Windows geschreven hebben bijvoorbeeld zijn Hackers, de mensen die de software voor uw wasmachine hebben geschreven zijn Hackers, de mensen die uw Hotmail wachtwoord raden zijn GEEN Hackers!!
  2. Cracker - Iemand die computers, netwerken of software kraakt, dit zijn de mensen die WEL inbreken op je computer, de mensen die je bankrekening proberen leeg te halen en de mensen die proberen je zover te krijgen dat je inlogt op nep sites en daar je gebruikersnaam en wachtwoord mee vrijgeeft aan hun
  3. Scriptkiddo - Dit zijn de mensen die graag een Cracker zouden willen zijn, dit zijn de mensen die programma's geschreven door Crackers gebruiken om in te breken op websites of computers, deze mensen hebben zelf de kennis of kunde niet om dit te doen dus zijn afhankelijk van wat de Crackers hun willen geven

 

In de media is een Hacker dus eigenlijk een Cracker. Het word nog verwarrender omdat er nu Crackers zijn die zichzelf Hacker zijn gaan noemen in navolging van een groep journalisten die het verschil niet wist. Dus is er vanuit zowel de Hacker als Cracker gemeenschap een nieuw onderscheid aangebracht, dus nu heb je het volgende lijstje:

  1. Hacker - De mensen die vasthouden aan de oude standaard en vinden dat ze als goed programmeur recht hebben op deze ere-titel zoals het vroeger gezien werd
  2. Whitehat Hackers - Dit zijn technisch gezien Crackers, alhoewel veel ook een Hacker achtergrond hebben, dit zijn de Crackers die het goed bedoelen, denk hierbij aan klokkenluiders die melden dan belangrijke websites niet veilig zijn, deze mensen doen dit uit ideologische overwegingen of omdat ze het als een uitdaging willen zien, ze willen doorgaans geen schade aanrichten en zelfs helpen de boel goed te beveiligen.
  3. Blackhat Hackers - Dit zijn gewoon de vroegere Crackers, dit is de groep die inbreekt op systemen of websites uit baldadigheid, om iets stuk te maken of om hier geld aan te verdienen op de één of andere manier, dit zijn de mensen die proberen jouw bank gegevens te stelen en die zoveel mogelijk van jouw data willen opslurpen om daar weer geld mee te verdienen, soms door fraude maar vaak ook door gewoon jouw gegevens weer door te verkopen aan mensen die daar op hun beurt weer misbruik van willen maken.
  4. Greyhat Hackers - Dit is een beetje vage groep Crackers, ze bedoelen het doorgaans niet zo slecht maar ze zijn zeker niet vies van eens kijken of ze nou echt dat belangrijke internetknooppunt onderuit kunnen halen of dat ze echt iemand zijn bank gegevens kunnen misbruiken, deze mensen gaat het vaak alleen maar om de 'kick', vaak zullen deze mensen zich niet fijn voelen als ze betrapt worden en zijn ze dan bereid te helpen beveiligen. 
  5. Scriptkiddo - Hierin is weinig veranderd behalve dan dat deze hun programmas dus van de Blackhats krijgen meestal, soms doen ze zich voor als iemand die wil leren en peuteren ze informatie of programma's los van de Whitehats of Greyhats.

 

Whitehats

Zoals gezegd dit is de groep die vooral gedreven door een zucht naar kennis of uit ideologische overwegingen inbreekt op een systeem. Dit zijn de mensen die zich als klokkenluider opwerpen en dit zijn de mensen die meehelpen een systeem te beveiligen, deze mensen verdienen in mijn mening ons respect. Helaas is het tegenwoordig meestal zo dat als deze mensen een succesvolle inbraak poging op een site of computer keurig melden, dat ze vervolgens geen reactie krijgen, als ze dan na verloop van tijd om het probleem toch aan te kaarten de informatie publiceren, iets wat deze mensen doorgaans op een zeer verantwoorde en veilige manier doen, dan worden ze vervolgd. Dit zijn de mensen die GRATIS hun hulp aanbieden aan grote multinationals en aan onze overheid. Deze groep word dus steeds kleiner en is steeds minder geïnteresseerd in de maatschappij helpen. Dit is in mijn mening een hele slechte ontwikkeling en ik hoop dat die trant zich weer keert.

Vaak zijn juist deze mensen briljante programmeurs met een perfect gevoel voor beveiliging als het om computers gaat. Deze mensen wil je juist in dienst nemen of aanmoedigen hun bevindingen te delen zodat je als bedrijf zijnde je veiligheid op orde kunt maken. Helaas word er in de praktijk voor gekozen deze mensen weg te zetten als criminelen die er op uit zijn een bedrijf te verstoren. Dit is duidelijk niet het geval, deze groep wil juist graag dat het internet veiliger word. Dit soort groepen jagen b.v. ook op mensen die kinderporno aanbieden of credit card gegevens proberen te stelen.

Astublieft bedrijven, overheid en mensen in de pers, probeer deze mensen te vriend te houden en probeer ze aan te moedigen dit werk op een goede en verantwoorde wijze te blijven doen. Ik zou zelfs de overheid willen vragen om zelf een aantal van dit soort mensen in dienst te nemen om audits bij bedrijven te doen om bijvoorbeeld dingen als vorig jaar met DigiNotar te voorkomen.

 

Blackhats

Dit is de groep waar je je zorgen om moet maken en dit is ook de groep waar meestal naar verwezen word als de term Hacker gebruikt word. Dit zijn de mensen die hun brood verdienen met het stelen van data, sommige hiervan doen dit voor een overheid, de meeste doen dit met commerciële doelen. De commerciële doelen hierin zijn dingen zoals inbreken op een computer netwerk van een bedrijf en dan ontwerpen stelen en verkopen aan de concurentie, het stelen van bank gegevens voor fraudelente transacties en het stelen van persoonsgegevens voor marketing doeleinden of om valsheid in geschrifte te kunnen plegen of gewoon om te verkopen.

Deze mensen moet je proberen op te sporen en aan te pakken, niet degene die keurig melden wat ze gedaan hebben en willen helpen om het veiliger te maken maar juist diegene die dat niet doen moet je opsporen, dit zijn de mensen die gewoon crimineel zijn zoals een inbreker een crimineel is. Dit zijn de mensen die niet zullen aarzelen om iemand zijn of haar bankrekening leeg te plunderen, dit zijn degene die mensen in de problemen brengen voor geldelijk gewin. En dat begint al op kleine schaal, een e-mail adres is zo een 3 US Dollar waard maar een e-mail adres wat gegarandeerd werkt is 7 US Dollar waard, weet je er ook nog een naam bij te vinden dan word het al 10 US Dollar. Dat zijn de prijzen die spammers betalen voor deze gegevens. Met een adres er bij verdubbelen deze prijzen en als er dan ook nog een bankrekening of een Facebook account of iets dergelijks bij zit word het nog veel lucratiever voor deze criminelen.

Dus politie en justitie, dit is de groep waar je achter aan moet, niet de mensen die keurig melden dat iets niet veilig is maar juist deze mensen die niets melden maar er wel misbruik van maken.

 

Meer termen

Dan zijn er nog wat termen die in de media regelmatig verkeerd gebruikt worden:

  1. Virus - Een virus is een zichzelf replicerend en verspreidend computer programma. Een virus is niet altijd kwaadaardig, in het verleden (eind jaren 80 begin jaren 90) waren er veel 'grappige' virussen in de omloop, zoals een virus wat tijdens de kerstdagen af en toe sneeuw over je beeldscherm liet dwarrelen en zo eens per uur een kerstman langs liet komen, de rest van het jaar deed dit virus niets. Helaas zijn de meeste virussen tegenwoordig kwaadaardig en bedoeld om dingen stuk te maken of te overbelasten.
  2. Trojans - Een trojan is een programma wat een achterdeurtje openzet in je PC zodat mensen mee kunnen kijken of desnoods de controle over de PC kunnen overnemen. Dit soort programma's word doorgaans ontwikkeld door bedrijven om mee te kijken met hun personeel of om de systeembeheerders de optie te geven op afstand beheer te doen zonder langs te komen. Ook bij scholen worden dit soort programma's veelvuldig ingezet om te voorkomen dat studenten spelletjes gaan spelen op de computers. Tegenwoordig vallen programma's die geen achterdeur openzetten maar in plaats daarvan informatie verzamelen en doorsturen naar een centraal punt ook onder de naam Trojans.

De meeste mensen die gehacked zijn blijken een Trojan op hun pc te hebben. Trojans verspreiden zichzelf veelal via websites. Onder de meeste mensen leeft nog het idee dat je hier voor in de 'achterbuurten' van het internet moet zijn zoals porno sites of sites die illegale software aanbieden. Helaas is niets minder waar de laatste 10 jaar, juist die sites doen hun best om zich daar heel erg tegen te beschermen. De meest voorkomende manieren waarop nu Trojans verspreid worden is door in te breken op populaire websites en deze de Trojan te laten verspreiden, een andere populaire methode is om in te breken op een advertentie netwerk systeem wat een hele hoop sites heeft en hier door de Trojan te laten verspreiden. Indien er weer een nieuw lek zit in Windows word dit ook gretig aangegrepen om op korte termijn heel veel PC's van een Trojan te voorzien.

 

Ergernis

Maar waarom nou dit stukje? Die ergernis over journalisten die incorrecte benaming gebruiken is slechts een klein deel van waarom ik mij ergers.

Ten eerste word er te pas en te onpas geroepen door mensen dat ze gehacked zijn, ik word regelmatig gebeld door dit soort mensen die mij dan vragen om het voor hun uit te zoeken en er wat aan te doen. Meestal blijkt dan een van de volgende scenario's de oorzaak te zijn:

  1. De PC loopt traag en het blijkt dat er al jaren geen onderhoud is gedaan zoals een virusscanner updaten of updates voor het systeem te installeren, van inbraak sporen is niets te vinden, doorgaans wel een ton aan virussen en trojans. Dit zijn mensen die het hardst roepen dat ze gehacked zijn terwijl het er in de praktijk op neer komt dat ze gewoon klakkeloos bij elke popup op ja of ok klikken.
  2. 'Ik weet zeker dat iemand mijn e-mail heeft gelezen! Ik moet wel gehacked zijn!' Na wat vragen blijkt meestal dat deze mensen de naam van hun huisdier of hun kind als wachtwoord hebben, dit is voor iedereen die een klein beetje onderzoek doet zo te raden, ik verwijs naar de film 'Wargames' uit 1983, hierin word al perfect gedemonstreerd hoe je iemands wachtwoord kan achterhalen indien het iets simpels is.
  3. 'Mijn bankrekening is geplunderd.' Hierbij hebben mensen doorgaans een Trojan opgelopen, de enige oplossing is de PC compleet schoonmaken en een up-to-date virusscanner installeren. Helaas word maar ongeveer 70% van de Trojans opgepikt door virusscanners dus is dit een risico wat altijd blijft bestaan, up-to-date blijven met zowel software als virusscanner is het enige wat je kunt doen en moet blijven doen om dit tegen te gaan, gelukkig is dit goed te automatiseren.
  4. 'Mijn zoon/dochter heeft een illegaal spelletje geinstalleerd, nu moet ik wel gehacked zijn!' In tegendeel tot wat de meeste software fabrikanten graag zeggen is illegale software geen oorzaak van inbraken, virussen of trojans. Het enige risico is in de download die gebruikt word aangezien sommige daarvan wel degelijk een trojan of  virus er in hebben, op het internet is hier genoeg informatie over te vinden en het is ook niet aan mij om hier les te geven in het downloaden van illegale software. Het volstaat om te zeggen dat het risico hierin nauwelijks groter is dan met gewoon browsen.

Er zijn natuurlijk nog legio andere oorzaken waardoor mensen denken dat ze gehacked zijn. Vrij zelden is dit echt het geval, meestal zijn het toch echt trojans die ergens bij mee zijn gekomen. Ik ga hier nu geen lezing geven over wat je hier tegen kunt en hoe je dit kunt voorkomen, de basis begint in ieder geval bij altijd goed lezen voor je bij een popup op ja of ok drukt.

Eigenlijk is dit een onderwerp waar ik niet over uitgeschreven raak maar het ging vandaag om de terminologie, ik geloof dat ik die wel uiteen heb gezet in dit stukje.

view">: Popular content block
view">

As most of you probably have noticed I added a popular content block to the blogs and stories sections. This is a view which uses the internal Drupal counters to see which content is accessed most in the past day and which in total. Surprisingly enough these counters are wildly inaccurate because they count search engines as well! So on any given day my Facebook Denied blog is most popular because it has more links on this site leading to the item then most of my other blogs have. Of course this is not satisfactory because this makes the popular block worthless basically...

I also got amazed at the amount of search engines indexing my website, there are a lot apparently! Even some Asian ones... So I guess I'll have to think about a carefully crafted robots.txt or a sitemap or some solution like that. Or find a way to filter the Drupal counters based on IP, however, the Drupal counters have no functionality for that as far as I know. If I Google this problem I get the recommendation to use a good stats program and not the Drupal counters Wink

view">: New menu structure
view">

As you can see I was getting a bit tired of the old menu structure, the menu's were annoying on a mobile device and some became so long that my site re-sized to a height to accommodate the menu while the content ended like 400 pixels higher in some cases. The last thing was of course just me being a prick and wanting to have stuff perfect.

So, while still in place the top menu doesn't expand anymore (except the home button for the and about/contact pages which no-one ever uses), this has become the main navigation menu which only contains links to the different content sections. Each content section got it's own menu on the left side which I build with the Views add on module Views Accordion.

This module doesn't do everything the way I like but at least it comes close. I would like to be able to have two layers of collapsible items, this module only provides one. I might be able to work around that with a view in a view, but I will have to test this on a later date.

Also, I find one thing confusing, you can set the view to open the active row basid on the url AND you can set a default. Opening the active row works like a charm, if you navigate to a blog the correct year/month expands nicely. However, if you navigate to one of the Blog Overview pages which aren't in the menu, ergo, it cannot open an active row, than it doesn't open the default row. I have set the default row to be Row 1, in the preview this is January. In the live site it suddenly is October 2013 ??? I really have no clue why this is or why this works badly. I will dig in to this also at a later date, now it is time to go to sleep.

An alternative solution is using the JQuery Menu module for Drupal. I have tested this and it works nicely after some restyling. The only drawback I find is the menu sorting used by Drupal. This keeps forcing me to assign weights to each item and making sure they are displayed in the correct sequence and in general gives a few minutes of extra work with each item I add to this site. I have been looking for a module that allows menu sorting by publishing date or some other criteria, the only thing I found was taxonomy terms which is not really useful for a site like this one. I might switch to this module anyway later on because this will allow me to have the menu's collapse by year as well as by month which might actually be very nice in a few years from now. I just hope I can find some way to sort menu's easier so my content is always newest on top.

I do like the way Views Accordion switches from one item to an other though, it's a very nicely done animation, haven't tested this with the JQuery Menu yet.

view">: Rate
view">

Yesterday I implemented the Rate module in Drupal 7 on this website. It is now possible to give a thumbs up or down for my blog, drawings and photo galleries. I have my doubts if people actually will use it, but hey, because we can we implement it Wink

This module will give a percentage of how many people liked or disliked something, when no one has voted yet it will default be 50% like and 50% dislike. If one person likes something it will be 100%/0%, two likes and one dislike will result in 66%/33%, etc... For the photo galleries the voting will be for the whole gallery and not the individual pictures, for drawings and sketches you will vote for the individual drawing or sketch.