Предотвратить 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