string[] theParms = ['parm1', 'parm2'];
string theQuery = "SELECT something, somethingAgain " +
"FROM aDBTable " +
"WHERE something = '{?}'" +
"AND something <> '{?}'";
Ich brauche den die {?} S mit den definierten parms in theParms zu ersetzen.C# ersetzen Parameter in Abfrage mit definierten Werten
Gibt es irgendeine Art von Schleife in C#, die ich um eine Schleife durch den String einsetzen kann und Ersetzen jedes gefundene {?} Mit dem entsprechenden parm Wert?
Etwas wie folgt aus:
Erste Schleife:
SELECT something, somethingAgain
FROM aDBTable
WHERE something = 'parm1' AND something <> '{?}'
Zweite Schleife:
SELECT something, somethingAgain
FROM aDBTable
WHERE something = 'parm1' AND something <> 'parm2'
Gibt es irgendeine Art von REGEX oder gemeinsamer Rahmen Funktion, die die oben tun kann?
SQL-Injection-Check
bool injectionCheckin = new injectionCheck().inCheck(theFinalQuery);
public class injectionCheck
{
public bool inCheck(string queryString)
{
var badWords = new[] {
"EXEC", "EXECUTE", ";", "-", "*", "--", "@",
"UNION", "DROP","DELETE", "UPDATE", "INSERT",
"MASTER", "TABLE", "XP_CMDSHELL", "CREATE",
"XP_FIXEDDRIVES", "SYSCOLUMNS", "SYSOBJECTS",
"BC_HOME_ADDRESS1", "BC_HOME_ADDRESS2", "BC_HOME_CITY", "BC_HOME_COUNTY", "BC_HOME_POSTAL", "BC_MAIL_ADDRESS1",
"BC_MAIL_ADDRESS2", "BC_MAIL_CITY", "BC_MAIL_COUNTY", "BC_MAIL_POSTAL", "BC_MAIL_STATE", "FLSA_STATUS", "GRADE",
"GRADE_ENTRY_DT", "HIGHEST_EDUC_LVL", "LAST_INCREASE_DT", "BC_SALP_DESCR", "BC_SALP_DESCRSHORT", "SAL_ADMIN_PLAN"
};
string pattern = "(?<!\\w)(" + Regex.Escape(badWords[0]);
foreach (var key in badWords.Skip(1))
{
pattern += "|" + Regex.Escape(key);
}
pattern += ")(?!\\w)";
dynamic _tmpCount = Regex.Matches(queryString, pattern, RegexOptions.IgnoreCase).Count;
if (_tmpCount >= 1)
return true;
else
return false;
}
}
Sie sollten vielleicht Parameter verwenden, um Injektionsprobleme zu vermeiden, aber ansonsten, was ist gegen eine einfache 'for' Schleife, wo Sie die erste Instanz von' {?} 'Mit Ihrem Parameter ersetzen? – Adwaenyth
@Adwaenyth Dann in der Schleife was ist mit dem zweiten Vorkommen von {?} ... drittem Vorkommen ... etc usw.? – StealthRT
Wirklich, benutze parametrisierte Abfragen – Pikoh