Har tidigare fått tips om att innan man skriver ut text, så kör man den genom ett filter som tar bort dumma tecken. Men bara så jag inte gör något dumt nu, men det är väll mycket bättre att göra kollen innan man skriver in i databasen och sen inte något mer?
Tecken som kan användas vid SQL-injections, osv., som kan förstöra för dig ska tas bort innan informationen lagras i databasen. Formatering av informationen sköter du när du hämtar den.
Tecken som kan användas vid SQL-injections, osv., som kan förstöra för dig ska tas bort innan informationen lagras i databasen. Formatering av informationen sköter du när du hämtar den.
är det inte smidigt att ta allt på en gång?
jag kör det genom detta filter nu:
<%
Function FixaTecken(sfix)
on Error resume next
sfix = Replace(sfix, "<", "<")
sfix = Replace(sfix, ">", ">")
sfix = Replace(sfix, chr(13), "")
sfix = Replace(sfix, chr(10) & chr(10), "<br> <br>")
sfix = Replace(sfix, chr(10), "<br>")
sfix = Replace(Trim(sfix), "'", "''")
sfix = Replace(sfix, "|", "")
FixaTecken= sfix
End Function
%>
och så gör jag den innan det lagras i databasen från och med nu. det borde väll räcka eller?
tänk om du bara tillåter användaren att skriva in ett visst antal tecken, och att bara samma mängd tecken går in i databasen. När du gör om texten innan du sätter in den så blir det ju ofta längre, och passar därmed inte. Felkälla.
Bättre att göra htmlencode när man skriver ut istället.
Jag märkte något jag inte förstår. När jag inte hade någon kontroll av koden som skulle in i databasen så gick det inte så bra att skriva med '-tecknet. Om jag lät koden passera genom filtret ovan så går det ju givetvis att skriva med de tecknet eftersom jag har denna raden:
sfix = Replace(Trim(sfix), "'", "''")
MEN när posten visas så står det ett '-tecken, det verkar altså som det tecknet inte har replacats, fast det sabbar ingenting utan det fungerar precis som om '-tecknet inte lägre var farligt. Varför är det så?