相关疑难解决方法(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万
查看次数

什么是存储过程?

什么是存储过程?他们是如何工作的?什么是存储过程的组成(每个必须是存储过程的东西)?

sql t-sql sql-server stored-procedures

281
推荐指数
8
解决办法
52万
查看次数

参考 - 有关PDO的常见问题解答

这是什么?

这是有关PHP数据对象的常见问题列表

为什么是这样?

由于PDO具有常规PHP用户未知的某些功能,因此有关PDO中的预准备语句和错误处理的问题非常频繁.所以,这只是一个可以找到它们的地方.

我该怎么办?

如果您的问题已与此列表密切相关,请在下面找到您的问题并将修复程序应用于您的代码.对其他问题进行简要介绍也是一个好主意,让自己为其他常见陷阱做好准备.

列表

也可以看看

php pdo

50
推荐指数
3
解决办法
7614
查看次数

mysql - 报价数字与否?

例如 - 我从cli创建数据库和表并插入一些数据:

CREATE DATABASE testdb CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
USE testdb;
CREATE TABLE test (id INT, str VARCHAR(100)) TYPE=innodb CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
INSERT INTO test VALUES (9, 'some string');
Run Code Online (Sandbox Code Playgroud)

现在我可以这样做,这些例子确实有用(所以 - 引号不会影响它看起来的任何东西):

SELECT * FROM test WHERE id = '9';
INSERT INTO test VALUES ('11', 'some string');
Run Code Online (Sandbox Code Playgroud)

所以 - 在这些例子中,我通过在mysql中实际存储为INT 的字符串选择了一行,然后在一个INT列中插入了一个字符串.

我不太明白为什么它的工作方式与此相同.为什么允许将字符串插入INT列?

我可以将所有Mysql数据类型作为字符串插入吗?

这种行为是否适用于不同的RDBMS?

谢谢!

mysql sql ansi-sql

45
推荐指数
3
解决办法
4万
查看次数

bindValue()和bindParam()之间的混淆?

我这两个功能之间的混淆Bindvalue()BindParam()

  1. 我在php.net看它不逃避%_,所以使用时要小心LIKE.所以我认为BindValue()在使用LIKE查询时不会使用.
  2. 当我们使用LIKE查询时BindParam().因为我知道BindParam可以逃避这些%_.
  3. BindValue()没有防止sql注入.我不确定这个,是真的吗?

朋友告诉我在这3点中提到的是对还是错.我是PDO的初学者所以请清楚解释一下..

php pdo bindvalue bindparam

11
推荐指数
2
解决办法
2万
查看次数

使用PDO而不绑定

$stmt = $conn->prepare('SELECT * FROM users WHERE user_id = :user_id');

$stmt->execute(array(':user_id' => $_GET['user_id']));

$result = $stmt->fetchAll(PDO::FETCH_OBJ);
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的PDO,我是否需要清理GET参数?

我知道如果我做的$stmt->bindParam(':user_id', $_GET['user_id'], PDO::PARAM_INT);比这不是问题.但我的方式安全吗?

php mysql pdo sanitization

5
推荐指数
1
解决办法
479
查看次数