webForumDet fria alternativet

Galet med replase

.NET

2 svar · 370 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

För att undvika sqlinjection så försöker jag så här:

public static string fixaTecken(string strText)
    {
        string nText = string.Empty;
        nText = strText.Replace("_", " ");
        nText = strText.Replace("'", " ");
        nText = strText.Replace("´", " ");
        nText = strText.Replace("|", " ");
        nText = strText.Replace("@", " ");
        nText = strText.Replace("$", " ");

        return nText;
    }
'kanske onödigt många men...
sokOrd = Webbutil.fixaTecken(Request.QueryString["sText"].ToString());
'jag visar min sql också, för det är här som det smäller
 sql = "SELECT Id,Title,Music,Writer,Hits FROM t_Lyrics WHERE " + 
sokTable + " LIKE '" + sokOrd + "%' ORDER BY " + sokTable;
'detta borde väll fungera, och söker jag på "co" så är det ok
'men söker jag på "co'"(bara för att testa) då får jag följande fel

Syntaxfel i frågeuttrycket 'Writer LIKE 'co'%' ORDER BY Writer'.

Jag får alltså inte replacen att fungera.

Medlem sedan juli 20011 084 inlägg
#2

Det där hör till forntiden(asp etc ;)) gör som någon tipsade dig om i en annan tråd istället och använd dig av Parameters. Där går det inte att göra sql-injections ändå.(Och du får bättre struktur och säkerhet på köpet)

Medlem sedan mars 20011 880 inlägg
#3

Vi glömmer denna fråga, och bergaver den samtidigt som mig.

262 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)