InternalError:(1054,你在'where子句'中的未知列'Ihe')

时间:2017-06-19 15:00:09

标签: python mysql pymysql

下面是我的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()

1 个答案:

答案 0 :(得分:1)

正如所写,这是一个非常危险的SQL注入漏洞。

当我将hostname设置为

时提交POST请求时会发生什么
''; DROP TABLE StoryData;

使用参数化查询而不是使用Python字符串格式。假设您的paramstyleformat,您可以将参数传递给execute()

query = "SELECT * FROM StoryData WHERE hostName LIKE %s"
cursor.execute(query, (result, ))