在 Livecode 中防止 SQL 注入
Prevent SQL Injection in 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&"
当 user/attacker 在表单中输入 "
字符时,应用程序显示 SQL 脚本中存在错误,这可能导致 user/attacker开始黑客攻击。
如何保护应用程序免受 SQL 实时代码注入?
revExecuteSQL tDatabaseID, "SELECT * FROM Users WHERE Username= ':1' AND Password=':2'", username, password
在查询构造中使用参数,不使用字符串连接
LiveCode 进行清理并在查询中使用参数 here.
因此,如果您像这样构建查询,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")
我有一个通过提示显示的登录表单 (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&"
当 user/attacker 在表单中输入 "
字符时,应用程序显示 SQL 脚本中存在错误,这可能导致 user/attacker开始黑客攻击。
如何保护应用程序免受 SQL 实时代码注入?
revExecuteSQL tDatabaseID, "SELECT * FROM Users WHERE Username= ':1' AND Password=':2'", username, password
在查询构造中使用参数,不使用字符串连接
LiveCode 进行清理并在查询中使用参数 here.
因此,如果您像这样构建查询,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")