AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
Det ser umiddelbart meget rigtigt ud. Men koden du viser er sårbar overfor SQL injection angreb. Det betyder at enhver med lidt snilde kan logge ind på siden uden at kende hverken brugernavn eller password. Sørg for altid at kontrollere at det brugernavn og password du får tilbage fra databasen svarer til det som brugeren har tastet ind, ellers er der 'åbent hus' for alle og enhver.
AAARRRGGGHHHH!!! Så har man siddet og forfattet en kæmpe lang smøre, og så forsvinder lortet når man trykker send!! Nå, forfra igen så :o(
SQL injection går ud på at få en SQL sætning til at se anderledes ud end det egentlig var meningen. En typisk SQL til at kontrollere brugernavn og password kan se sådan her ud:
SELECT * FROM users WHERE username='buller' AND password='hemmeligt'
Men hvis jeg nu er snedig, så skriver jeg:
' OR '1'='1
i felterne for brugernavn og password. Det vil få SQl sætningen til at se sådan her ud:
SELECT * FROM users WHERE username='' OR '1'='1' AND password='' OR '1'='1'
Denne SQL vil returnere samtlige brugere i databasen. Hvis man så kun kigger på om databasen har returneret et resultat inden man giver adgang, så sidder man i saksen. Mange bruger metoden med at kigge om der var et resultat af søgningen, og så gemme den første række i resultatet som brugernavn, password og diverse privilegier. Da det som regel er en form for administrator som ligger som den første record vil jeg altså blive logget ind som administrator. Men der er selvfølgelig råd for den slags. Man kunne jo sammenligne det brugernavn og password som kommer fra databasen, med det som brugeren har tastet ind. På den måde finder man ud af at ' OR '1'='1 ikke er lig med den_første_og_bedste_bruger.
Der findes imidlertid også andre former for SQL injection. Nogen kan være mere ondsindede end andre, f.eks. kan man stoppe en DROP DATABASE ind som så vil slette hele din database. Derfor er det altid en god idé at bruge addslashes() på alle felter som ryger ind i din SQL. Den sørger nemlig for at specielle tegn bliver escapet. Det giver samtidig den sidegevinst at dine brugere kan bruge specielle tegn i deres brugernavn og password, uden at vælte dit script.
Som man siger på udenlandsk: "Assumption is the mother of all fuck-ups". Det gælder i høj grad når man programmerer. Du må aldrig regne med at det som brugeren indtaster i et felt, er som det skal være. Husk at tillid er godt, men kontrol er bedre.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.