Предотвратяване на SQL инжектиране в Livecode

Имам формуляр за влизане, който се показва чрез подкана (ask). Имам тези скриптове, използвани за влизане на потребителя.

ask "Please enter your username"
put it into username
ask "Please enter your password"
put it into password

revExecuteSQL tDatabaseID, "SELECT * FROM Users WHERE Username=" &username& " AND Password="&password&"

Когато потребителят/нападателят въведе знака " във формуляра, приложението показва, че има грешка в SQL скриптовете, което може да накара потребителя/нападателя да започне да хаква.

Как да защитим приложението от SQL инжектиране в livecode?


person Mai    schedule 19.01.2015    source източник


Отговори (2)


LiveCode извършва дезинфекция и използва параметри в заявки, както е описано тук .

Така че, ако изграждате заявката си по този начин, LiveCode не помага и трябва да избегнете собствената си заявка:

get revDataFromQuery(tab, return, gConnectionID, "SELECT * FROM users WHERE email LIKE '%" & theSearchString & "%'")

Ако обаче правите заявката си по ТОВА, тогава LiveCode вече изгражда сравнително сигурна заявка за вас:

get revDataFromQuery(tab, return, gConnectionID, "SELECT * FROM users WHERE email LIKE :1", "theSearchString")
person Alan B    schedule 19.01.2015
comment
Горният скрипт работи. Каква е целта на разделителя на реда и разделителя на колоната? - person Mai; 20.01.2015

revExecuteSQL tDatabaseID, "SELECT * FROM Users WHERE Username= ':1' AND Password=':2'", username, password

Използвайте параметър за конструкцията на заявката, не използвайте конкатенация на низове

person Eric    schedule 19.01.2015