相关疑难解决方法(0)

围绕mysql_real_escape_string()的SQL注入

即使使用mysql_real_escape_string()函数,是否存在SQL注入的可能性?

考虑这个示例情况.SQL是用PHP构造的,如下所示:

$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));

$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
Run Code Online (Sandbox Code Playgroud)

我听过很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()函数也可以破解.但我想不出任何可能的漏洞?

像这样的经典注射:

aaa' OR 1=1 --
Run Code Online (Sandbox Code Playgroud)

不工作.

你知道任何可能通过上面的PHP代码注入的注入吗?

php mysql sql security sql-injection

596
推荐指数
4
解决办法
22万
查看次数

如何在Python中的SQL语句中使用变量?

好的,所以我不是那种经验丰富的Python.

我有以下Python代码:

cursor.execute("INSERT INTO table VALUES var1, var2, var3,")
Run Code Online (Sandbox Code Playgroud)

where var1是整数,var2&var3是字符串.

如何在没有python的情况下编写变量名,包括它们作为查询文本的一部分?

python sql

79
推荐指数
5
解决办法
22万
查看次数

Escape字符串Python for MySQL

我使用Python和MySQLdb下载网页并将它们存储到数据库中.我遇到的问题是我无法在数据库中保存复杂的字符串,因为它们没有被正确转义.

我可以使用Python中的函数来转义MySQL的字符串吗?我试过'''(三个简单的引号)""",但它没有用.我知道PHP有mysql_escape_string()类似的东西吗?

谢谢.

python mysql escaping

64
推荐指数
3
解决办法
10万
查看次数

psycopg2 TypeError:在字符串格式化期间不是所有参数都被转换

我正在尝试执行一个简单的查询,但无论我如何传递参数,都会收到此错误.

这是查询(我使用Trac db对象连接到DB):

cursor.execute("""SELECT name FROM "%s".customer WHERE firm_id='%s'""" % (schema, each['id']))
Run Code Online (Sandbox Code Playgroud)

schema和每个['id']都是简单的字符串

print("""SELECT name FROM "%s".customer WHERE firm_id='%s'""" % (schema, each['id']))
Run Code Online (Sandbox Code Playgroud)

结果: SELECT name FROM "Planing".customer WHERE firm_id='135'

有错误是删除后引用firm_id=,但该方式参数被视为一个整数,并::text导致相同的错误.

python trac psycopg2

11
推荐指数
6
解决办法
2万
查看次数

Flask:基于先前选择的下拉值

我试图根据用户之前所做的选择来限制下拉列表中的选择。这就是我的烧瓶的样子:

初始化.py

@app.route('/create/', methods=['GET','POST'])
def create():
    mySQL2 = SelectCustomer(session['ID']) #displayed invoicereceiver
    global sessioncur
    try:
        form = CreateinvoiceForm(request.form)
        if request.method == 'POST' and form.validate():
            #HEADER
            #This fetches from HTML
            customer = request.form.get('customer')
            goodsrec = request.form.get('goodsrec')
    return render_template("createinvoice.html", form=form,  mySQL2 = mySQL2)
Run Code Online (Sandbox Code Playgroud)

使用 mySQL2 作为可能的变量从 html 表单中填充客户以供选择:

html 选择表单

<select required name="customer" class="selectpicker form-control" , 
placeholder="Select">
<option selected="selected"></option>
{% for o in mySQL2 %}      
<option value="{{ o[2] }}">{{ o[2] }}</option>  
{% endfor %}
</select>
Run Code Online (Sandbox Code Playgroud)

Goodsrec的选择必须取决于选择的客户。我的想法是通过执行以下操作来获取客户 ID:

c, conn …
Run Code Online (Sandbox Code Playgroud)

javascript jquery select flask

4
推荐指数
1
解决办法
6645
查看次数

使用 '.format()' 与 '%s' 在 cursor.execute() 中用于 mysql JSON 字段,使用 Python mysql.connector,

我的目标是使用库将 JSON 对象存储到 json 类型的 MySQL 数据库字段中mysql.connector

import mysql.connector
import json

jsonData = json.dumps(origin_of_jsonData)

cnx = mysql.connector.connect(**config_defined_elsewhere)
cursor = cnx.cursor()
cursor.execute('CREATE DATABASE dataBase')
cnx.database = 'dataBase'
cursor = cnx.cursor()
cursor.execute('CREATE TABLE table (id_field INT NOT NULL, json_data_field JSON NOT NULL, PRIMARY KEY (id_field))')
Run Code Online (Sandbox Code Playgroud)

现在,下面的代码可以正常工作,我的问题的重点是“%s”的使用:

insert_statement = "INSERT INTO table (id_field, json_data_field) VALUES (%s, %s)"
values_to_insert = (1, jsonData)
cursor.execute(insert_statement, values_to_insert)
Run Code Online (Sandbox Code Playgroud)

我的问题是:在将变量 aValue(s) 组合成一个字符串时,我非常严格地坚持使用'...{}'.format(aValue)(or f'...{aValue}'),从而避免使用%s(不管我的原因是什么,我们不要在这里辩论它们 - 但它是如何我想尽可能保留它,因此我的问题)。

在任何情况下,无论我尝试哪种方式,我都无法使用类似于上述结构并使用'...{}'.format()(以任何形状或形式)而不是%s. 例如,我(在多次迭代中)尝试过

insert_statement …
Run Code Online (Sandbox Code Playgroud)

python string.format json mysql-python

4
推荐指数
2
解决办法
8203
查看次数