Anti SQL Injection Fonksiyonu

Konu Yazar

ThirtySeven

Member
Ağu
383
2
Merhaba arkadaşlar,
Bizzat bana aittir, güle güle kullanın.
PHP:
// Anti SQL İnjection Function By SeveNStyLe
    FUNCTION anti_sql_injection($text) {
      $text=htmlspecialchars($text);
      $text=str_replace("'", "SQL Denemesi", $text);
      $text=str_replace("update", "SQL Denemesi", $text);
      $text=str_replace("UPDATE", "SQL Denemesi", $text);
      $text=str_replace("from", "SQL Denemesi", $text);
      $text=str_replace("FROM", "SQL Denemesi", $text);
      $text=str_replace("drop", "SQL Denemesi", $text);
      $text=str_replace("DROP", "SQL Denemesi", $text);
      $text=str_replace("select", "SQL Denemesi", $text);
      $text=str_replace("SELECT", "SQL Denemesi", $text);
      $text=str_replace("delete", "SQL Denemesi", $text);
      $text=str_replace("DELETE", "SQL Denemesi", $text);
      $text=str_replace("insert into", "SQL Denemesi", $text);
      $text=str_replace("INSERT INTO", "SQL Denemesi", $text);
      $text=str_replace("where", "SQL Denemesi", $text);
      $text=str_replace("WHERE", "SQL Denemesi", $text);
      $text=str_replace("procedure", "SQL Denemesi", $text);
      $text=str_replace("PROCEDURE", "SQL Denemesi", $text);
      $text=str_replace("exec", "SQL Denemesi", $text);
      $text=str_replace("EXEC", "SQL Denemesi", $text);
      $text=str_replace("--", "SQL Denemesi", $text);
      return $text;   
    }

Kullanımı :
PHP:
$veri = "' delete from userdata --";
echo anti_sql_injection($veri); // Çıktısı SQL Denemesi SQL Denemesi SQL Denemesi userdata SQL Denemesi
 
Cevap: Anti SQL Injection Fonksiyonu

mesela adam insert into ve INS>ERT INTO yerine iNSERT Into ne olucak ? :)
 
Cevap: Anti SQL Injection Fonksiyonu

' (tek tırnak) ve -- (çift tire) sansürlü olduğundan işlemeyecek :)
 
Cevap: Anti SQL Injection Fonksiyonu

geliştirilmesi lazım
Büyük küçük harf sorunu var
Adam iNSERT yazarsa fonksiyon çalışmaz
 
Cevap: Anti SQL Injection Fonksiyonu

hocam istediği kadar büyük küçük harf sorunu olsun, sql injectionda önceki işlem kodunu bozan tek tırnaktır (') ve en son işlemin gerisini iptal eden ise çift tiredir bilirsiniz, bunlar sansürlü iken bu şahıs istediği kadar insert into veya başka bişi yapsın ?
 
Cevap: Anti SQL Injection Fonksiyonu

Genelde kullandığım;
Kod:
        $deger = $_GET['deger'];
	$karakterler = array(chr(39),chr(92),chr(34),"-","/",";");
	$deger = str_replace($karakterler,"",$deger);


ASP'de ise;

Kod:
<%
 Function QueryFilter(Str)
Str = Replace(Str, "*", "[INJ]",1,-1,1)
Str = Replace(Str, "=", "[INJ]",1,-1,1)
Str = Replace(Str, "<", "[INJ]",1,-1,1)
Str = Replace(Str, ">", "[INJ]",1,-1,1)
Str = Replace(Str, ";", "[INJ]",1,-1,1)
Str = Replace(Str, "(", "[INJ]",1,-1,1)
Str = Replace(Str, ")", "[INJ]",1,-1,1)
Str = Replace(Str, "+", "[INJ]",1,-1,1)
Str = Replace(Str, "#", "[INJ]",1,-1,1)
Str = Replace(Str, "'", "[INJ]", 1, -1, 1)
Str = Replace(Str, "&", "[INJ]", 1, -1, 1)
Str = Replace(Str, "%", "[INJ]", 1, -1, 1)
Str = Replace(Str, "?", "[INJ]", 1, -1, 1)
Str = Replace(Str, "´", "[INJ]", 1, -1, 1)
Str = Replace(Str, ",", "[INJ]",1,-1,1)
Str = Replace(Str, "UNION", "[INJ]",1,-1,1)
Str = Replace(Str, "SELECT", "[INJ]",1,-1,1)
Str = Replace(Str, "WHERE", "[INJ]",1,-1,1)
Str = Replace(Str, "LIKE", "[INJ]",1,-1,1)
Str = Replace(Str, "FROM", "[INJ]",1,-1,1)
Str = Replace(Str, "UPDATE", "[INJ]",1,-1,1)
Str = Replace(Str, "INSERT", "[INJ]",1,-1,1)
Str = Replace(Str, "ORDER", "[INJ]",1,-1,1)
Str = Replace(Str, "GROUP", "[INJ]",1,-1,1)
Str = Replace(Str, "ALTER", "[INJ]",1,-1,1)
Str = Replace(Str, "ADD", "[INJ]",1,-1,1)
Str = Replace(Str, "MODIFY", "[INJ]",1,-1,1)
Str = Replace(Str, "RENAME", "[INJ]",1,-1,1)
Str = Replace(Str, Chr(39), "[INJ]", 1, -1, 1)
If InStr(1,Str,"[INJ]",1) then
'[INJ] yazısı varsa bu sql injeksiyon yapılmış demek buraya düzenleyin.
end if
QueryFilter = Str
End Function
%>

php fonksiyonu basit ve işlevsel güvende hissettiriyor fakat asp'de niyeyse hepsine bakmadan içim rahat olmuyor :D

Aslında For Each ile tüm post / get verileri birden taranabilir.
not:araştırdım zaten fonksiyon yapılmış işte şöyle ; :D

Kod:
BlackList = Array(";", "/*", "*/", "@@",_
"char", "nchar", "varchar", "nvarchar",_
"alter", "begin", "cast", "create", "cursor",_
"declare", "delete", "drop", "end", "exec",_
"execute", "fetch", "insert", "kill", "open",_
"select", "sys", "sysobjects", "syscolumns",_
"table", "update")

ErrorPage = "/hata.asp"

Function CheckStringForSQL(str)
On Error Resume Next

Dim lstr


If ( IsEmpty(str) ) Then
CheckStringForSQL = false
Exit Function
ElseIf ( StrComp(str, "") = 0 ) Then
CheckStringForSQL = false
Exit Function
End If

lstr = LCase(str)



For Each s in BlackList

If ( InStr (lstr, s) <> 0 ) Then
CheckStringForSQL = true
Exit Function
End If

Next

CheckStringForSQL = false

End Function

' Form verilerini blacklistten geçiriyoruz

For Each s in Request.Form
If ( CheckStringForSQL(Request.Form(s)) ) Then

Response.Redirect(ErrorPage)

End If
Next



For Each s in Request.QueryString
If ( CheckStringForSQL(Request.QueryString(s)) ) Then
' hata sayfasına yönlendiriyoruz
Response.Redirect(ErrorPage)

End If

Next
 
Son düzenleme:
Cevap: Anti SQL Injection Fonksiyonu

Bu ne işe yatıyor kardeş? önemli bişeyse bende yapıcam
 
Geri
Üst Alt