Skydda sig mot hackerintrång via formulär
Om man vill skydda sina formulär mot att någon hacker försöker skriva in elaka kommandon, är det bästa att man då kör replace på sådana tecken som kan klassas som kandidater till att ingå i elaka script?
Som t.ex. denna för att motverka en enkelfnutt:
Replace(strangen, "("'","'")
Vilka tecken bör man i så fall göra detta med?
Blir man tillräckligt säker då mot elak formulär-data?
En annan sak man annars kan göra är väl server.htmlencode kan jag tänka mig. Men den blir inte så lämplig om man vill att användaren ska kunna mata in html om han/hon vill, men ändå skydda sig mot hackers.
Svara
Sv: Skydda sig mot hackerintrång via formulär
Troligen får du göra detta i flera steg. När du säger hackers så menar du väl att man skriver htmlkod hej vilt?
I så fall föreslår jag att du kör htmlencode, därefter återställer de eventuella taggarna som du tillåter i alla fall, exempelvis bold, kanske färg osv.
När du talar om att ersätta ' så tänker du säkert på det som kallas "sql-injection" och enklast där är replace kommandot som du anger, ex:
<code>
text = replace(request.form("data"),"'","''")
</code>
Därefter kan du tryggt skriva ner texten i databasen utan att det kan ställas till några problem. Enklast av allt är att använda command-objektet där du pekar in vart och en av fälten så det inte kan bli till en sql-sats.
Du läser bl.a mer om injection i artikeln som Artikel [Användare, roller och rättigheter i SQL Server - del 4]. Jag hittade inte artikeln som Christoffer Hedgate skrivit, men det finns en till.
Hälsningar
Svara
Sv: Skydda sig mot hackerintrång via formulär
Okej...
Finns det nån skillnad på att annars ange replace satsen så som jag gjorde (med undantag för att jag råkade skriva den fel förut :-)
<code>strangen=Replace(strangen, "'","'") </code>
eller går det precis lika bra att ersätta den med numret tecknet har i CHR-tabellen?
Svara
Sv: Skydda sig mot hackerintrång via formulär
Att ersätta med '' gör att det i databasen finns ett ', istället för de html-tecknena du angav.
Svara
Sv: Skydda sig mot hackerintrång via formulär
Jag ha som huvudregel att spara information så oförändrat som möjlig. Eftersom det annars råder risk att information går förlorad. t.Ex i ditt fall går det inte att ta reda på om användaren skrivit ett '-tecken eller direkt skrivit-'
Om du ersätter din strängavgränsare eller använder dig av objekt som recordset och command objektet. Kan du spara informationen som den är angiven.
När du visar information en användare eller hacker skrivit in bör du alltid formatera den med Server.HTMLEncode(). Annars kan en hacker skriva ett javascrip i ett inlägg som postar en annan klients cookies. På så sätt ta sig in.
Svara