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? 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? Okej... Att ersätta med '' gör att det i databasen finns ett ', istället för de html-tecknena du angav. 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-'Skydda sig mot hackerintrång via formulär
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.Sv: Skydda sig mot hackerintrång via formulär
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älsningarSv: Skydda sig mot hackerintrång via formulär
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?Sv: Skydda sig mot hackerintrång via formulär
Sv: Skydda sig mot hackerintrång via formulär
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.