密码如\ /'时mysql查询的问题

时间:2010-02-02 09:28:17

标签: mysql

在mysql表名(user_login)中,我有一个像login_name和password这样的字段。我输入login_name作为abc,输入密码为/'(特殊符号,如\ /')。我的查询是

从user_login中选择密码,其中密码如'/''和 我得到了sql语法错误

3 个答案:

答案 0 :(得分:6)

您应该使用参数化查询来实现调用的语言。注意SQL Injection attack

答案 1 :(得分:1)

您应该使用参数而不是将变量直接放入查询中。我认为这是逃避符号的问题。

查看此链接How to set query parameters in MySQL Query Browser?

答案 2 :(得分:0)

如果您在登录系统中使用LIKE,则会将所有安全性抛出窗口。在登录时试试这个,看看我的意思:

用户名:%

密码:%

数据库中第一个用户获得的访问权限。 (祈祷不是管理员用户)

如果用户名已知,那么%作为密码将提供完全访问权限。

如果你想要一个不区分大小写的更友好的系统(是的,这会减少可能的密码数量 - 但很可能适合用户名)然后强制降低(或者更高或者ucwords或者你喜欢的任何东西) - 但是DO不要在任何涉及登录或未经筛选的用户输入(例如搜索框)的QUERY中使用LIKE运算符。任何时候你必须使用LIKE运算符确保删除或手动ESCAPE%和_(如果你使用的是MS SQL,那么也要逃避所有的REGEX运算符 - [] ^ $()*。)。

mysql的许多转义函数都不会转义%_字符,当与LIKE一起使用时,它允许任何访问者进行通配符搜索(可能严重陷入服务器并导致DoS问题)并且更糟糕的是使用%:%登录的过度特权。