sql >> Databáze >  >> RDS >> PostgreSQL

zabezpečení psycopg2 a SQL injection

AsIs není bezpečné, pokud opravdu nevíte, co děláte. Můžete jej použít například pro testování jednotek.

Předávání parametrů není tak nebezpečné, pokud svůj dotaz sql předem nenaformátujete. Nikdy to nedělejte:

sql_query = 'SELECT * FROM {}'.format(user_input)
cur.execute(sql_query)

Od user_input může být ';DROP DATABASE;' například.

Místo toho udělejte:

sql_query = 'SELECT * FROM %s'
cur.execute(sql_query, (user_input,))

pyscopg2 vyčistí váš dotaz. Také můžete předem ošetřit parametry ve vašem kódu vlastní logikou, pokud opravdu nedůvěřujete vstupu vašeho uživatele.

Podle psycopg2 dokumentaci :

Také bych nikdy, nikdy nedovolil svým uživatelům, aby mi řekli, na kterou tabulku se mám dotazovat. Logika (nebo trasy) vaší aplikace by vám to měla říct.

Ohledně AsIs() , za psycopg2 dokumentaci :

Takže jej nepoužívejte se vstupem uživatele.



  1. Python &Sqlalchemy - Vzor připojení -> Náhodně odpojeno od vzdáleného serveru

  2. Načíst data z CSV do mySQL databáze Java+hibernate+spring

  3. Hledání vzoru schématu

  4. Oracle:Jak zavolat přetíženou proceduru?