Je kunt bij Vevida standaard gebruikmaken van Active Server Pages (ASP). Deze toepassing maakt gebruik van bijvoorbeeld VBScript voor het uitvoeren van allerlei functies. Zo kun je gegevens opvragen uit of opslaan in een database. Of je gebruikt ASP voor het toepassen van een standaard, of dynamische, lay-out.

ASP bij Vevida

Het gebruik van ASP op onze webservers is geen probleem. We werken met Windows Server IIS webservers, en op deze systemen is ASP de ‘native’ scripttaal. We maken dan ook gebruik van de eigen implementatie van Microsoft van ASP. Er is een aantal zaken dat je in de gaten dient te houden.

Om een goede ASP-hostingomgeving te kunnen aanbieden is het verstandig om het ‘debuggen’ van de code uit te voeren op je lokale ontwikkelomgeving. Het Microsoft programma Visual Studio Code is hiervoor al voldoende. Na het ontwikkelen van je ASP-website is het belangrijk deze uitgebreid te testen op je ontwikkelomgeving. Hierna kun je de website op de Vevida webservers plaatsen.

Hulp met ASP

Als je hulp nodig hebt bij het ontwikkelen van ASP-pagina’s, dan kun je die vooral vinden op de sites http://www.w3schools.com. Je vindt daar handleidingen en veel praktijkvoorbeelden, maar ook kant-en-klare ASP-scripts. Ook Microsoft heeft uitgebreide informatie beschikbaar. Je vindt die in het artikel 25+ ASP Tips to Improve Performance and Style van Microsoft.

Belangrijke tips

Je kunt veel problemen zelf oplossen door in je internetbrowser de zogenoemde ‘vriendelijke’ foutmeldingen uit te schakelen. Je krijgt dan een gedetailleerde foutmelding te zien in plaats van eenvoudigweg ‘HTTP 500’.

Naast de vriendelijke foutmeldingen in je browser kun je ook gedetailleerde foutmeldingen laten weergeven op je website. In onze hostingomgeving staat het tonen van deze foutmeldingen standaard uitgeschakeld, om niet te veel informatie prijs te geven aan gewone bezoekers.

Om gedetailleerde foutmeldingen weer te geven moet je het volgende plaatsen in een web.config-bestand:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <httpErrors errorMode="Detailed" />
  </system.webServer>
</configuration>

Meer handige en belangrijke ASP tips

  1. Gebruik géén Access database. Microsoft raadt dit af.
  2. Houd in het achterhoofd dat classic ASP een scripttaal, of technologie, is uit 2000 (bron: Wikipedia). ASP.NET heeft de voorkeur
  3. Let bij het aanmaken van objecten d.m.v. ‘Set‘ op het weer verwijderen daarvan na gebruik met ‘Set objectnaam = Nothing‘:
    Set Conn = Server.CreateObject("ADODB.Connection")
    ' ... ASP code
    Set Conn = Nothing
  4. Vergeet ook niet geopende databaseverbindingen te sluiten:
    Conn.Open
    ' ... ASP code
    Conn.Close
    Set Conn = Nothing
  5. en recordsets te sluiten:
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open, SqlQuery, Conn
    ' ... ASP code
    Rs.Close
    Set Rs = Nothing
  6. Zet je Access database om naar een MySQL- of SQL-Server database. Een SQL Server Compact Edition (SqlCe) database wordt afgeraden. Deze is “deprecated” of verouderd.
  7. Gebruik ‘Option Explicit‘. Deze functie is niet verplicht. ASP werkt ook zonder, maar vanuit beveiligings- en performance-oogpunt is het beter om variabelen van tevoren te definiëren. Je voorkomt hiermee slordigheidjes en foutjes in de code. Deze functie voorkomt dat je een variabele over het hoofd ziet.
  8. Gebruik ‘response.buffer = true‘ waar mogelijk. Het object versnelt de weergave van ASP-pagina’s door deze te cachen (bufferen). Als de uitvoer gebufferd wordt, wacht de server met het sturen van de uitvoer naar de browser tot het hele script is doorlopen. Of totdat het script tussendoor de objecten ‘flush‘ of ‘end‘ aanroept.
  9. Gebruik onze webservers NIET als testomgeving! ASP is een krachtige tool, waarmee eventueel performanceproblemen kunnen ontstaan als het niet zorgvuldig wordt toegepast. Ondanks onze voorzorgsmaatregelen zou het natuurlijk vervelend zijn als één van onze servers problemen ondervindt ten gevolge van een slecht geprogrammeerde ASP-pagina. Dat is ook in jouw belang.

ASP Parent Paths en includes

In de IIS-webserver configuratie staat de instelling ASP Parent Paths (ASP bovenliggende paden) uitgeschakeld. Dit betekent dat je geen .. of ../ in paden kunt gebruiken, bijvoorbeeld in ASP’s include file.

Maak gebruik van virtuele paden:

<!--#include virtual="/bestand.asp"-->

in plaats van

<!--#include file="../bestand.asp"-->

Hetzelfde geldt ook voor de methode Server.MapPath()

Microsoft FrontPage Server Extensies

Microsoft FrontPage Server Extensies (FPSE) worden niet ondersteund.

SQL Server Compact Edition (SqlCe) en Access databasetoegang met ASP

Je kunt standaard gebruikmaken van SQL Server Compact Edition (SqlCe) als database back-end. Maar helaas is deze opvolger van Access ook alweer verouderd. Je kunt een ADODB-connectie maken met behulp van de Provider Microsoft.SQLSERVER.CE.OLEDB.4.0:

Set Conn = Server.CreateObject("ADODB.Connection")
strCnxn = "Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;" & _
   "Data Source="D:\www\FTP-inlognaam\database\SqlCe_File.sdf;"

Vervang FTP-inlognaam met je inlognaam.

Maar omdat Access en SqlCe verouderd zijn: gebruik zoveel mogelijk MySQL of Microsoft SQL Server als database-backend.

E-mail versturen met ASP

Je kunt van een aantal componenten gebruikmaken om met ASP een e-mail te versturen vanaf je website. Twee voorbeelden hiervan zijn Microsofts CDOSYS (Collaboration Data Objects) en Persits ASPEmail.

Als je hiervan gebruik maakt, moet je op een paar instellingen letten die aangepast moeten worden.

Met CDOSYS doe je dit via het object CDO.Configuration:

  1. Verstuur je e-mail via de SMTP-server smtp.vevida.com
    • Zet hiervoor cdoSendUsingPort op 2
    • Zet hiervoor cdoSMTPServer op smtp.vevida.com
  2. Versleutel de verbinding met TLS-encryptie, zodat derden de e-mailtransactie niet kunnen afluisteren:
    • Zet hiervoor cdoBasic op 1
    • Zet cdoSendTLS op true
  3. Geef je e-mailadres en wachtwoord op om in te loggen op de SMTP-server:
    • Stel cdoSendUserName in met je e-mailadres
    • Stel cdoSendPassword in met het bijbehorende wachtwoord
    • Zet cdoSMTPAuthenticate op cdoBasic

Je vindt uiteraard een voorbeeld hiervan in ons helpartikel ASP e-mail versturen met CDOSYS.

Cross Site Scripting (XSS) en SQL injection tegengaan

In Cross Site Scripting en SQL injection schuilt een groot gevaar. Het is belangrijk dat je jouw website hier goed tegen beveiligt als deze aan minimaal één van de twee voorwaarden voldoet:

  1. De website gebruikt een database als backend
  2. De website verwerkt invoer van bezoekers

Op internet kun je ontzettend veel informatie en voorbeelden vinden om je website hiertegen te beschermen – en hieronder volgen er een paar. Wij raden aan dat je deze doorneemt.

Echter, wij willen je graag wijzen op één artikel dat je absoluut links moet laten liggen. “Filtering SQL injection from Classic ASP” heet het artikel en adviseert om een blacklist van SQL-commando’s aan te leggen die niet toegestaan zijn in jouw ASP-scripts. Elk advies dat spreekt over het tegengaan van SQL injection door middel van een blacklist met niet toegestane commando’s, is een slecht advies.

Er zijn simpelweg teveel SQL-commando’s om op te nemen in je eigen blacklist, laat staan om allemaal te kennen. Daarnaast worden de mogelijkheden door verschillende URL-encodings nog meer vergroot. Erg ondoenlijk dus.

In het kort komt het erop neer dat je jouw website beveiligt tegen Cross Site Scripting met de functie Server.HTMLEncode en tegen SQL injection met Prepared Statements.

Enkele links met meer informatie:

Nota bene

Mocht je naar aanleiding van dit artikel een reactie hebben dan kun je die via het onderdeel Vragen op MyVevida naar ons sturen.

ASP

Wat vond je van dit antwoord?

Bedankt voor je feedback!

Er is een fout opgetreden. Probeer het later opnieuw.