php - filter_input 和 mysqli_real_escape_string 用于整数

标签 php mysqli mysql-real-escape-string filter-input

我正在开发一个简单的 PHP 数据库应用程序供内部使用,但希望将其编码为最佳实践。我的一些页面正在从 GET 请求接收整数值,我只是想知道真正需要多少验证和清理。

目前我正在使用 $num = filter_input(INPUT_GET, 'num', FILTER_VALIDATE_INT, $num_options); 以及指定的最小值和最大值。如果 $num == false

从这里我退出并显示错误消息

是否还需要使用$mysqli->real_escape_string($num);

目前我不介意,因为我认为使用整数进行 SQL 注入(inject)非常困难......

谢谢

凯文

更新:澄清我正在执行的查询如下所示

$sql = "SELECT employeeID, concat(FirstName, ' ', LastName) as Name FROM employee WHERE employeeID='$num'";

最佳答案

我看到您使用 mysqli,您最好的安全选择是查看准备好的语句。

PHP mysqli Prepared Statements

示例有点复杂,但上面的链接有深入的示例。
一旦你掌握了它的窍门,并建立你的类(class)。这实际上只是一个普通的 sql 查询,但不包含您使用的值?

"SELECT * FROM account WHERE username = ? AND password = ?"

并将您的值绑定(bind)到语句:

array("bradley", "Passw0rd");

简单来说,安全性来自于您不会自己将值连接到查询字符串中。使其不易发生 sql 注入(inject)。

关于php - filter_input 和 mysqli_real_escape_string 用于整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9653099/

相关文章:

javascript - 按添加按钮后我的行多次添加

php - 通过删除 safe_mode,PHP 5.4 的安全性在哪里

PHP/MySQL 性能建议

php - 使用比较时mysql查询返回问题

php - 来自远程文件的 SQL 注入(inject)

由 c++ Mysql C API mysql_real_escape_string

php - 通过链接打开文件

php - 如何验证restful api中post的数据

php - 如何使用 MySQLi 准备好的语句创建新的 MySQL 数据库用户?

MySQL:SEARCH 查询中的 mysql_real_escape_string