webForumDet fria alternativet

Frågor om hur man gör sina sidor säkrare...

ASP

8 svar · 494 visningar · startad av LearningASP

Medlem sedan okt. 2001127 inlägg
Frågan#1

Jag har lite frågor ang säkerhet på ASP-sidor...

Jag undrar hur man kan hindra användare att kunna lägga kod som kan köras på servern genom att posta kod i ett formulär?

även om man kunde få lite tips allmänt för att höja säkerheten..

Tack så mycket på förhand

Jonas

Medlem sedan juni 200032 967 inlägg
#2

För att förhindra att javascript-kod körs om det postas i ett formulär, kan du alltid använda Server.HTMLEncode när du visar upp datan.

Response.write Server.HTMLEncode (strText)

För att öka säkerheten kan man alltid köra med NT-inloggning och se till att man alltid har installerat de senaste patcharna till IIS.

Mvh

Medlem sedan okt. 2001127 inlägg
#3

Jag har hört att man ska köra Replace() på '
men kan användare skicka ASP-kod i formulär och förstöra mha det?

MVH

Jonas

Medlem sedan juni 200032 967 inlägg
#4

Jag har hört att man ska köra Replace() på '

Jo, det skall du göra om du använder SQL-frågor med strängar som kommer från en formulärinmatning. Det är dock inte av säkerhetsskäl i första hand, utan för att ett inmatat '-tecken bryter SQL-frågan och skapar ett fel.

men kan användare skicka ASP-kod i formulär och förstöra mha det?

Nej, inte om inte du själv bestämt det och exekverar koden mha en metod som ExecuteGlobal el liknande. I standardutförande alltså: Nej.

Mvh,

Medlem sedan okt. 2001127 inlägg
#5

det spelar ingen roll vad man ersätter ' med för tecken eller?

Medlem sedan juni 200032 967 inlägg
#6

Egentligen gör det inte det, men det allra bästa är att escape:a det endast. Det gör du genom att byta ut en apostrof mot två. Då är strängen korrekt när du plockar ut den ur databasen, utan att du behöver göra några ersättningar.

Detta är alltså rätt sätt:

strSQL = "SELECT * FROM tblTable  WHERE fldField = 'O''Malley'"

Om vi utgår i från att namnet O'Malley finns i asp-variabeln strName kan vi alltså göra så här:

strSQL = "SELECT * FROM tblTable  WHERE fldField = '" & replace(strName, "'", "''") & "'"

red: skrev oförståeligt...

Mvh,

Medlem sedan okt. 2001127 inlägg
#7

Jag hittade detta på Micrsoftsida om att kunna förstöra genom att skicka kod i formulär:

Check <FORM> and Querystring Input in Your ASP Code
Many sites use input from a user to call other code or build SQL statements directly. In other words, they're treating the input as valid, well-formed, nonmalicious input. This should not be so; there are a number of attacks where user input is treated incorrectly as valid input and the user could gain access to the server or cause damage. You should always check each <FORM> input and query string before passing it on to another process or method call that might use an external resource such as the file system or a database.

You can perform text checking with the JScript V5 and VBScript V5 regular expression capabilities. The following example code will strip a string of all invalid characters (characters that are not 0-9a-zA-Z or _):

Set reg = New RegExp
reg.Pattern = "\W+" ' One or more characters which
' are NOT 0-9a-zA-Z or '_'
strUnTainted = reg.Replace(strTainted, "")

The following sample will strip all text after a | operator:

Set reg = New RegExp
reg.Pattern = "^(.+)\|(.+)" ' Any character from the start of
' the string to a | character.
strUnTainted = reg.Replace(strTainted, "$1")

Also, be careful when opening or creating files by using Scripting File System Object. If the filename is based on the user's input, the user might attempt to open a serial port or printer. The following JScript code will strip out invalid filenames:

var strOut = strIn.replace(/(AUX|PRN|NUL|COM\d|LPT\d)+\s*$/i,"");

The pattern syntax in the Version 5 script engines is the same as that in Perl 5.0. Refer to the V5 scripting engine documentation at http://msdn.microsoft.com/scripting/default.htm for further detail and http://msdn.microsoft.com/workshop/languages/clinic/scripting051099.asp for examples.

Medlem sedan juni 20001 257 inlägg
#8

Men vad händer om man på asp-sidan skall göra en

objConn.Execute("DELETE FROM tblMytable WHERE fldMyfield = '" & Request.Form("textinput") & "'")

och någon skriver blabla'; DELETE FROM tblMytable ?

eller nåt i den stilen

Medlem sedan apr. 20012 427 inlägg
#9

RED: missförstod frågan.

277 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)