python sql injection

0

Cześć,

Mam problem z rozwiązaniem błędu.

Kod:

login = input("Login: ")
password = input("Password: ")

login(login, password)

Funkcja login zwraca informacje o użytkowniku.
Jak podaje prawidłowe wartości to wszystko jest ok, ale jak podam taka wartość w login "admin' -- " to nie znając hasła loguje się na konto.

Pytanie sql:

SELECT * FROM user.users WHERE login='{login_user}' AND password='{login_pass}'
2

Po pierwsze, to kod jest wyrwany z kontekstu, ale jeśli sklejasz/interpolujesz stringi, to nie dziw się że można oszukać klauzulę WHERE. Użyj czegoś gotowego, np. SQL Alchemy albo zadbaj o zabezpieczanie parametrów.

2

Musiałbyś użyć czegoś takiego co się nazywa prepared statement, czyli po polsku jak to się zwie: zapytania z parametrami? Zapomniałem jak to było :(

Idea jest tak, że masz zapytanie w formie tekstu, w który umieszczone są placeholdery, czyli miejsca, w które będą podstawiane wartości.

Coś w stylu

SELECT * FROM users WHERE id = ?

i pod ? będzie podstawiona wartość. Nie wiem czym to robi się w Pythonie, ale w tym kierunku chyba trzeba szukać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1