The making off van het nieuwe LinQhost portal

De laatste jaren zijn we binnen LinQhost volop bezig geweest met productontwikkeling en ervoor zorgen dat we je een super hosting ervaring kunnen bieden. Daar hoort natuurlijk ook een goed portal bij die relevante inzichten geeft in de dienstverlening. En zie daar: het nieuwe LinQhost portal is live! We willen je in dit blog graag vertellen hoe het portal tot stand is gekomen, welke componenten we hiervoor hebben gebruikt en wat de beweegreden hiervoor waren.

Uitgangspunten

Als je vanaf nul begint is het goed om een paar uitgangspunten te defineren om te zorgen dat je de juiste dingen doet. Daarom hebben we de volgende uitgangspunten genomen:

  • Veiligheid – De functionaliteiten in ons nieuwe portal kunnen potentieel desastreuze gevolgen hebben bij onjuist gebruik of onjuiste implementatie. Dit punt hebben we dan ook in alle vervolgstappen als basis meegenomen.
  • RESTful API driven – De RESTful API zorgt voor de functionaliteit en de frontend communiceert hiermee. Hierdoor is bijvoorbeeld het eventueel overschakelen naar een ander frontend-framework in de toekomst een stuk eenvoudiger.
  • Interface – De interface moet responsive en professioneel zijn. Het ontwikkelen van een eigen interface is erg tijdrovend en we hebben er voor gekozen om een bestaand framework te gaan gebruiken.
  • Toekomst – De eerste versie van het portal zal als fundament dienen voor nieuwe functionaliteiten. Hiermee willen we voorkomen dat we in een later stadium zaken moeten omgooien.
  • PHP – De PHP code moest future-proof zijn, daarom is PHP 7.2 als basis genomen voor de ontwikkeling.

Componenten

Tegenwoordig zijn er vele frameworks waar je uit kunt kiezen. Wij hebben de verschillende componenten gekozen op basis van ervaring en historie. Uiteraard komt er ook een stukje persoonlijke voorkeur bij kijken.

Backend

De portal applicatie maakt gebruik van PHP 7.2 en is gebouwd met het Laravel framework. Hierdoor kunnen wij focussen op klant functionaliteit in plaats van het hoeven ontwikkelen van basis functionaliteit. Voor het uitvoeren van backend processen maken we gebruik van Beanstalk queue software.

Frontend

Voor de frontend maken we gebruik van Metronic dit is een responsive CSS/JS framework op basis van Bootstrap. Metronic stelt ons in staat om een professionele interface te gebruiken met veel functionaliteit zoals grafieken, mappen en andere statistieken.

Server communicatie

Om gegevevens op te vragen/wijzigen op je server is het nodig dat de portal met je server kan communiceren. Hiervoor hebben we een speciaal RESTful API component ontwikkeld op de klant server. Deze is gebasseerd op een minimale versie van NGINX, Lua en PHP.

Feedback

Verbetersuggesties, bugs of andere problemen waar men tegenaan loopt: we zijn natuurlijk erg blij met uw feedback! Het eenvoudig kunnen doorgeven hiervan maken we mogelijk door het gebruik van Usersnap. Met deze handige tool kun je snel een screenshot met opmerkingen naar ons sturen. Kijk maar eens in het panel en klik vervolgens op het Usersnap-icoontje, rechts van uw pagina.

Q/A

We willen niet tegen problemen aanlopen tijdens deployment van nieuwe releases en maken met deze reden dan ook gebruik van Jenkins om de releases te testen. Ook zorgen we er met Raygun voor dat we snel op de hoogte zijn van eventuele fouten.

Security

Wanneer je ervoor kiest om een online-portal of een webapplicatie aan je klanten aan te bieden, dan is security essentieel. Zeker wanneer u belangrijke wijzigingen t.a.v. de dienstverlening kunt doorvoeren. Om dit te bewerkstelligen hebben we de onderstaande technische en organisatorische maatregelen genomen.

Hosting

Voor maximale stabiliteit en veiligheid draait het portal op ons eigen superveilige HPW platform (zonder enige aanpassing!).

Security Headers

Om de portal applicatie te beveiligen tegen eventuele Cross Site Scripting (XSS) kwetsbaarheden maken we gebruik van CSP (Content Security Policy) headers. Met deze headers geven wij precies aan wat wel en niet uitgevoerd mag worden en vanaf welke locatie. Zo kunt u bijvoorbeeld voorkomen dat er malafide, externe javascript wordt uitgevoerd. Helaas bestaat er niet zoiets als een universele CSP policy, deze verschilt per webapplicatie en het instellen van een correct CSP policy is erg tijdrovend. En doe je het niet correct, dan is er een grote kans dat je webapplicatie niet correct functioneert.

Meer weten over CSP? Check dan eens de website van Scott Helme! Naast CSP maken we ook gebruik van o.a referrer-policy, Strict-Transport-Security (HSTS) en X-Content-Type-Options headers.

Hashing

In het verleden hebben we alle wachtwoorden van onze klanten opgeslagen met een hash en een salt. Op deze manier is het voor hackers niet mogelijk om data – zoals wachtwoorden – te achterhalen. Dit is altijd ruim voldoende geweest maar tijden veranderen… en we willen graag voorop lopen met security! Daarom hebben we ook een nieuwe hashing toegevoegd. PHP 7.2 bevat de Sodium Crypto Library(libsodium) en met deze library kun je extreem veilige wachtwoord hashes genereren; wij maken gebruik van de Argon 2 hash.

Bij de eerste keer inloggen op het portal zal je oude wachtwoord automatisch worden omgezet naar een Argon 2 hash.

Controle

Security zit in ons DNA! Maar soms is het verstandig dat iemand anders “het vlees keurt”. Daarom hebben we een geautomatiseerde PCI-DSS scan en een handmatige Pentest laten uitvoeren. Bij de Pentest heeft een white hat hacker handmatig de webapplicatie getest en een code-audit uitgevoerd. Gelukkig kwamen er geen grote issues aan het licht en hebben we de enkele kleine aanbevelingen overgenomen. Deze check gaan we regelmatig herhalen zodat we de veiligheid van het portal kunnen blijven garanderen.

Uiteraard zijn jullie ook van harte welkom bij ons bounty programma 😉

Ten slotte

We zijn blij met de introductie van het vernieuwde portal en hopen dat je dit ook bent. We streven continu naar een werkwijze waarbij je snel, eenvoudig en veilig uw handelingen kunt doen. Wij wensen je veel gebruiksplezier!

Het vernieuwde portal is nu live en te bereiken op: https://portal.linqhost.nl. Je kunt op je portal inloggen met dezelfde gegevens die je op https://linqhost.nl/mijn gebruikt.

NB. Mocht je ons willen helpen bij het verbeteren en uitbreiden van het nieuwe portal dan hebben we een handige feedback tool beschikbaar in het portal. Uiteraard kunt je ons ook bellen of mailen op servicedesk@linqhost.nl