相关疑难解决方法(0)

如何在PHP中阻止SQL注入?

如果插入用户输入而不修改SQL查询,则应用程序容易受到SQL注入的攻击,如下例所示:

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
Run Code Online (Sandbox Code Playgroud)

这是因为用户可以输入类似的内容value'); DROP TABLE table;--,查询变为:

INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
Run Code Online (Sandbox Code Playgroud)

可以采取哪些措施来防止这种情况发生?

php mysql sql security sql-injection

2776
推荐指数
28
解决办法
166万
查看次数

PDO相当于mysql_num_rows或mssql_num_rows

我知道之前已经问过这个问题,但似乎解决方案已经针对所提出的问题.

我有一个包含数百个实例的代码库,其中使用了mssql_num_rows.

代码示例:

$db->execute($sql);

if ($db->getRowsAffected() > 0) {
    $total = $db->fetch();
Run Code Online (Sandbox Code Playgroud)

在db类中:

$this->rowsaffected = mssql_num_rows($this->query_result);
Run Code Online (Sandbox Code Playgroud)
  • 我无法创建通用SELECT count(*) FROM table查询,因为我有太多特定的select语句.
  • 我可以运行一个preg_replace删除之间的所有内容SELECT and FROM,然后用a替换COUNT(*)并运行第二个查询,但这假设所有查询都以某种方式设置.
  • 我可以fetchAllcount()得到结果,但这意味着要升级if语句的所有实例.

那么如果人们将他们的代码更新为PDO,那么替换为*_num_rows函数的最佳方法是什么呢?不是解决特定问题的东西,而是取代*_num_rows功能的东西.如果那是不可能的,那之前是什么让它成为可能呢?

php mysql sql-server pdo mysql-num-rows

2
推荐指数
1
解决办法
1086
查看次数

标签 统计

mysql ×2

php ×2

mysql-num-rows ×1

pdo ×1

security ×1

sql ×1

sql-injection ×1

sql-server ×1