ColdFusion do's and dont's
In Nederland maken maar weinig webontwikkelaars gebruik van onder andere ColdFusion, Sigma Solutions is daar één van. Hoewel modernere en betere ontwikkelomgevingen voor handen zijn, zoals .NET van Microsoft, waarin de nieuwste release van het Accessify WCMS is ontwikkeld, zijn er nog altijd websites en applicaties die ontwikkeld zijn in ColdFusion. Sigma Solutions raadt aan deze te migreren naar een nieuwe taal of anders om ze correct te beheren.
ColdFusion is een taal op zich, gebaseerd op Java, met z’n specifieke eigenaardigheden. Door de ervaring die Sigma Solutions heeft met ColdFusion, weten wij waar we op moeten letten en wat mogelijke valkuilen zijn. In dit artikel zal ik er enkele benoemen.
Queries
Cfqueryparam
Een veel gebruikte methode om een website te misbruiken, is SQL injection. Dit houdt in dat je een waarde stuurt naar de server, bijvoorbeeld een zoekterm of een gebruikersnaam, waarin code staat die gelezen kan worden door de database. Om dit te tegen te gaan, maak je in ColdFusion gebruik van de tag <cfqueryparam> (of query.addParam in script-based queries), bijvoorbeeld:
<cfquery>
UPDATE table SET name = <cfqueryparam = “#name#” cfsqltype=”CF_SQL_VARCHAR” maxlength=”50” />
</cfquery>
Maintain connections
Elke keer als een query wordt verzonden naar de SQL-server door ColdFusion, wordt er een nieuwe verbinding gelegd met de server. Het kost echter meer tijd om bij elke query een nieuwe verbinding te maken dan om de verbinding te behouden en dus moet je altijd maintain connections aanvinken in de instellingen va de betreffende datasource in ColdFusion Administrator. Let echter wel op, want als er wijzigingen in de databasetabellen of –views zijn, dan worden die vaak niet herkend als maintain connections aangevinkt is. In dat geval moet de optie even uitgezet worden.
SELECT TOP X
Van sommige queries wil je slechts een x aantal rijen terugkrijgen. Met CFQUERY kan je dan het attribuut maxRows gebruiken, maxRows=”50” geeft je dan maximaal 50 rijen terug. In SQL is er echter een equivalent, namelijk TOP, waarmee je hetzelfde zou kunnen bereiken met SELECT TOP 50 name FROM table. Het voordeel is dat je er hiermee voor zorgt dat de limiet al wordt toegepast op de SQL-server, voordat het naar de ColdFusion-server wordt gestuurd, hoewel de databasedriver op basis van maxRows ook zal optimaliseren. TOP werkt net iets sneller dan maxRows en indien mogelijk, is het aan te raden dat te gebruiken.
Weergeven informatie
In het volgende artikel wordt uitgelegd welke do’s en don’ts er zijn op het gebied van weergeven van informatie op je website via ColdFusion.