我试过通过在firefox之外向服务器进行自定义查询来尝试实现SQL注入.
在php中,所有变量都以这样的字符串传递给查询.
请注意,在此阶段,$_POST尚未触及.
mysql_query('INSERT INTO users (password,username) VALUES(' . sha1($_POST['password']) . ',' . $_POST['username'] . '));
这是一种安全的改变方式吗?
最佳答案
你绝对应该用mysql_real_escape_string来逃避用户名.
当然,最好的解决方案是使用准备好的语句.这样,查询语法和数据的分离就在mysql API级别上进行.
而且,正如其他人所指出的那样,价值观绝对应该用引号括起来.尤其是文字.