Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Säkerhetsfråga vid inmatning av formulär!

Postades av 2004-02-17 13:17:30 - Mikael Orm, i forum asp.net generellt, Tråden har 7 Kommentarer och lästs av 635 personer

Om man har ett formulär med en textruta för ex fritextsökning.

Och sen tar emot posten genom
SQL = "SELECT MetaData FROM tMeta WHERE tMeta = " & Request.Form("TxtSearch")

och sedan kör det mot SQL Servern!

Vad kan en illasinnad person ställa till med genom att mata in tecken i TxtSearch?
Han borde ju inte kunna göra så mycket mer än att ställa en subfråga eller liknande eller?

Använder alltid Procedurer men har en del gammal kod som har vanliga SQL frågor enligt ovan.



Svara

Sv: Säkerhetsfråga vid inmatning av formulär!

Postades av 2004-02-17 13:28:19 - Johan Lindfors

Det är lite beroende på vilket konto som du använder för att göra uppslaget i databasen med. Kort så kan jag säga att det som du gör (bygger upp en SELECT sats) genom ihopslagning av strängar, är HELT fel.

Det kallas att öppna sig för SQL Injection och det har funnit en hel del diskussioner runt det i detta forum och det finns många bra dokument att läsa mer om det på internet...

Exempel på ett bra dokument som bör skrämma dig ordentligt:
http://www.nextgenss.com/papers/advanced_sql_injection.pdf

Mvh


Svara

Sv: Säkerhetsfråga vid inmatning av formulär!

Postades av 2004-02-17 14:43:16 - Pelle Johansson

Lösningen i ditt fall är följande för att undvika sql-injection:

<code>
Data = Replace(Request.Form("TxtSearch"),"'","''")
SQL = "SELECT MetaData FROM tMeta WHERE tMeta = '" & Data & "'"
</code>


Svara

Sv: Säkerhetsfråga vid inmatning av formulär!

Postades av 2004-02-17 14:47:41 - Fredrik Normén

Replace på ' behöver inte alltid lösa alla problem, jag skulle rekommendera att använda parametrar istället, ADO.Net ser till att formatera dem så att inget tecken kan bryta frågan.

/Fredrik Normén NSQUARED2


Svara

Sv: Säkerhetsfråga vid inmatning av formulär!

Postades av 2004-02-17 15:31:39 - Kalle Dahlberg

Kan du ge ett exempel där problemet kvarstår efter replace?


Svara

Sv: Säkerhetsfråga vid inmatning av formulär!

Postades av 2004-02-17 16:10:59 - Fredrik Normén

--------------- EDIT -----------------------

string name = "fredik ' or 1=1--";
string age = "35; shutdown --";
name = name.Replace("'","''");
age = age.Replace("'","''");
string sql = "SELECT * FROM Employees WHERE firstname = '" + name + "' or employeeid = " + age;

Frågan ovan kommer att se till så SQL servern gör en shutdown. För age är integer och innhåller ingen '. Du kan även sätta age till 35 shutdown utan ; och servern skulle startas om.

I boken Writing Secure Code second edition sidorna 401-411 kan du läsa om varför det inte räcker enbart med replace på en enkelfnutt. På sidan 402 står det:

Caution: Escaping characters might not make you immune to SQL injection attacks.

På sidan 404, under rubriken: Remedy #2: Building SQL Statements Securely står det att parametrar ska användas för att göra frågan säker.

Use parameterized queries- not string concatenation-to build queries.

Boken är utgiven av Microsoft Press och har ISBN: 0735617228

--------------- EDIT -----------------------


/Fredrik Normén NSQUARED2






Svara

Sv: Säkerhetsfråga vid inmatning av formulär!

Postades av 2004-02-18 15:28:47 - Andreas Hillqvist

Räcker med en kontrol på IsNumeric för tal. Finns soim används vid svar tidigare i forumet:
<code>
Function SQLNumber(Value)
If IsNumeric(Value) Then
SQLNumber = Replace(Value, ",", ".")
Else
SQLNumber = "Null"
End If
End Function
</code>

Det självklara är att alltid validera data. Man bör ge användaren rätta att förändra data om den inte uppfyller de angivna vilkoren. Men genom att efter det använda funktioner som formaterar tal kan man slippa säkerhetshål som man inte förutsett.

T.Ex. om talet kommer från en select i ett forumlär. Måste ju någon medvetet sckia ogiltligt data eftersom en vanlig användare inte kan göra något annat än att välja ett val från listan


Svara

Sv: Säkerhetsfråga vid inmatning av formulär!

Postades av 2004-02-19 18:01:34 - Mikael Orm

Intressant!
Provade att skriva '; DROP TABLE tUsers--
och '; SHUTDOWN--

Inte så roligt...

Parametrar verkar vara säkert! Hände ingenting när jag körde samma fråga mot en sp med parametrar.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 165
27 952
271 704
1 922
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies