SQL注入问题

时间:2015-04-29 04:32:52

标签: php sql sql-injection

假设Web服务器使用以下PHP代码来处理登录请求:

$username = $_POST[user];
$password = $_POST[pass];
$sql = "SELECT * FROM users WHERE name = '$username' AND password = '$password'";
if(mysql_num_rows($rs) > 0){ //do something
}
  1. 用户名的值将始终导致成功登录?
  2. 我认为值' OR 1=1将始终导致成功登录,因为查询将是:

    "SELECT * FROM users WHERE name = '' OR 1=1 AND password = '$password'"
    

    这是对的吗?

    1. 假设数据设置为使用GBK中文unicode字符集。在GBK中,字节0x5c\0x27进行编码'。字节0xbf27表示两个字符¿',字节0xbf5c表示单个中文字符。如果用户名和密码字段向'"\null添加斜杠,假设数据库解释字符串,则用户名将始终导致成功登录作为GBK,但添加斜杠处理字符串为ASCII?
    2. 我不确定句子的最后部分是什么意思(通过解释为GBK但处理为ASCII)。有人能说明如何解决这个问题吗?

0 个答案:

没有答案