下面是我的python / pymysql代码的一部分。我基本上是尝试使用输入到搜索框中的输入从数据库中检索数据。我不明白为什么键入的数据会遇到此错误。 “Ihe”只是我数据库中的测试主机名。
@app.route('/result',methods= ['POST', 'GET'])
def result():
if request.method == 'POST':
result = request.form['hostname']
cursor = connection.cursor()
query = ("SELECT * FROM StoryData WHERE hostName LIKE %s" % ( result))
cursor.execute(query)
search_for = cursor.fetchall()
for row in search_for:
ID = row['ID']
hName = row['hostName']
rName = row['reportName']
return render_template("result.html", search_for=search_for)
connection.close()
答案 0 :(得分:1)
正如所写,这是一个非常危险的SQL注入漏洞。
当我将hostname
设置为
''; DROP TABLE StoryData;
使用参数化查询而不是使用Python字符串格式。假设您的paramstyle
为format
,您可以将参数传递给execute()
:
query = "SELECT * FROM StoryData WHERE hostName LIKE %s"
cursor.execute(query, (result, ))