Dynamische SQL-Abfrage: Tabellennamen festlegen
In dynamischen SQL-Abfragen können Sie bestimmte Methoden verwenden, um Parameter dynamisch bereitzustellen und den Tabellennamen festzulegen. Obwohl Sie einen Parameter erfolgreich festgelegt haben, benötigen Sie jetzt eine Anleitung zum dynamischen Festlegen des Tabellennamens.
Tabellennamen dynamisch festlegen
Um SQL-Injection-Schwachstellen zu verhindern, wird empfohlen, wann immer möglich Funktionen zu verwenden. In diesem Fall können Sie mehrere Techniken kombinieren, um den Tabellennamen dynamisch festzulegen:
<code class="language-sql">SET @TableName = '<[db].><[schema].>tblEmployees' SET @TableID = OBJECT_ID(@TableName) --如果格式错误/注入,则无法解析。 SET @SQLQuery = 'SELECT * FROM ' + QUOTENAME(OBJECT_NAME(@TableID)) + ' WHERE EmployeeID = @EmpID'</code>
Dieses Skript initialisiert den Tabellennamen als Parameter und ruft dann die zugrunde liegende Objekt-ID ab, um sicherzustellen, dass der angegebene Name gültig ist. Wenn der angegebene Tabellenname fehlerhaft ist oder als SQL-Sicherheitslücke eingeschleust wurde, wird die Objekt-ID nicht aufgelöst.
Stellen Sie abschließend einen Verweis auf den Tabellennamen her, um potenzielle SQL-Injection-Angriffe zu vermeiden, und vervollständigen Sie die dynamische SQL-Abfrage, indem Sie den bereitgestellten Mitarbeiter-ID-Parameter hinzufügen.
Das obige ist der detaillierte Inhalt vonWie kann ich Tabellennamen in dynamischen SQL-Abfragen dynamisch festlegen, um SQL-Injection zu verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!