擅长:python、mysql、java
<p>为了防止注入攻击,您应该为值使用占位符</p>
<p>所以改变</p>
<pre><code>mycursor.execute(f"SELECT * FROM privileges_groups WHERE id = {PrivID}")
</code></pre>
<p>到</p>
<pre><code>mycursor.execute("SELECT * FROM privileges_groups WHERE id = ?", (PrivID,))
</code></pre>
<p>占位符只能存储给定类型的值,不能存储任意SQL片段。这将有助于防止出现奇怪的(可能是无效的)参数值</p>
<p>但是,不能对表名和列名使用占位符</p>
<p><strong>注意</strong>:只有一个元素元组需要尾随逗号,但多个元素元组不需要尾随逗号。逗号可以消除元组与被括号包围的表达式之间的歧义</p>
<p>相关:<a href="https://stackoverflow.com/questions/5468425/how-do-parameterized-queries-help-against-sql-injection">How do parameterized queries help against SQL injection?</a></p>