Dynamische SQL-Abfrage: Verwenden Sie Parameter, um Tabellennamen festzulegen
Bei der Verarbeitung dynamischer SQL-Abfragen ist es normalerweise erforderlich, den Tabellennamen basierend auf Eingabeparametern dynamisch festzulegen. Während das Festlegen von Parametern wie IDs einfach ist, kann das Festlegen von Tabellennamen eine Herausforderung darstellen.
Fehlgeschlagener Versuch:
Der im bereitgestellten Code gezeigte erste Ansatz besteht darin, den Tabellennamen direkt in der SQL-Abfragezeichenfolge festzulegen. Allerdings ist dieser Ansatz anfällig für SQL-Injection-Angriffe.
Lösung mit der Funktion OBJECT_ID:
Um die Sicherheit zu gewährleisten und böswillige SQL-Injection zu vermeiden, wird empfohlen, die Funktion OBJECT_ID zu verwenden, um die Objekt-ID des Tabellennamens dynamisch zu analysieren. Dadurch werden fehlerhafte oder injizierte Tabellennamen nicht aufgelöst, wodurch Sicherheitslücken vermieden werden.
Hier ist der aktualisierte Code:
<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>
Das obige ist der detaillierte Inhalt vonWie kann ich Tabellennamen in dynamischen SQL-Abfragen mithilfe von Parametern sicher festlegen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!