Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转义引号php和mysql_Php_Mysql_Sql_Security_Escaping - Fatal编程技术网

转义引号php和mysql

转义引号php和mysql,php,mysql,sql,security,escaping,Php,Mysql,Sql,Security,Escaping,可能重复: 我通过addslashes($str)转义引号 当我将文本字段中的输入保存到MySQL数据库时,这是对MySQL注入的充分保护,还是因为可以绕过此转义方法而需要进一步过滤输入?或者有更好的方法吗?您应该阅读PDO中准备好的语句: 您应该阅读PDO中准备好的语句: 你可以这样做: <?php $query = mysql_query("SELECT id FROM users WHERE username = '".mysql_real_escape_strin

可能重复:

我通过
addslashes($str)
转义引号


当我将文本字段中的输入保存到MySQL数据库时,这是对MySQL注入的充分保护,还是因为可以绕过此转义方法而需要进一步过滤输入?或者有更好的方法吗?

您应该阅读PDO中准备好的语句:

您应该阅读PDO中准备好的语句:

你可以这样做:

<?php  
    $query = mysql_query("SELECT id FROM users WHERE username =   '".mysql_real_escape_string($username)."' AND password = '".mysql_real_escape_string($password)."'");  
?>  

你可以这样做:

<?php  
    $query = mysql_query("SELECT id FROM users WHERE username =   '".mysql_real_escape_string($username)."' AND password = '".mysql_real_escape_string($password)."'");  
?>  

转义引号显然是不够的。最安全的做法是使用参数绑定。请参阅文档。

转义引号显然是不够的。最安全的做法是使用参数绑定。请参阅文档。

我建议使用mysql\u real\u escape\u字符串或类似函数(取决于您使用的DB访问方法)。

我建议使用mysql\u real\u escape\u字符串或类似函数(取决于您使用的DB访问方法)。

是的,有。根据预期值,您可以检查所有参数是否存在以下情况:

  • 变量的值是否有意义
  • 变量的值是否在合理的值范围内
  • 变量的值是否在预定义的最大长度内
这些是一些基本的检查,可以帮你省去很多麻烦。此外,为了避免更多问题:

  • 始终筛选上传的文件,从不执行上传的任何内容
  • 永远不要执行SQL或计算直接包含用户输入的代码。始终首先解析输入,以便确定它不包含任何异常

  • 是的,有。根据预期值,您可以检查所有参数是否存在以下情况:

    • 变量的值是否有意义
    • 变量的值是否在合理的值范围内
    • 变量的值是否在预定义的最大长度内
    这些是一些基本的检查,可以帮你省去很多麻烦。此外,为了避免更多问题:

    • 始终筛选上传的文件,从不执行上传的任何内容
    • 永远不要执行SQL或计算直接包含用户输入的代码。始终首先解析输入,以便确定它不包含任何异常

    另请参见:不,这太糟糕了。关于正确的方法,请看重复的问题。尽管有很多关于这方面的帖子:)另请看:不,这太糟糕了。请参阅重复的问题,了解正确的方法。尽管有大量的帖子,但是:)请不要推荐PHP手册上有红色“请勿使用”通知的函数。还有纯文本密码吗?wtf?请不要建议在PHP手册中用红色大标题“请勿使用”通知的函数。还有纯文本密码吗?通过将字符串混合在一起构建查询会留下太多的错误空间。使用绑定参数。该函数在PHP手册中还附带了一个红色的“use something other”警告。是的,但是很多人不一定想使用数据库抽象层,也不想在只插入单个数据的情况下使用准备好的语句可能带来的额外开销(与使用不同的数据多次执行相同的查询不同,在这种情况下,准备好的语句在性能方面确实非常出色)。此外,一些用户可能在其服务器上没有可用的MYSQLi扩展,或者无法/不知道如何安装它。通过将字符串混合在一起生成查询会留下太多错误空间。请使用绑定参数。该函数还带有一个大红色“Use other”是的,但是很多人不一定想使用一些数据库抽象层,也不一定想在只插入单个数据的情况下使用准备好的语句可能带来的额外开销(与使用不同的数据多次执行相同的查询不同,在这些数据中,准备好的语句在性能上确实非常出色)。此外,一些用户可能没有MYSQLi扩展在其服务器上可用,或者没有能力/知道如何安装它。