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

MySQL 加载数据:准备语句协议中尚不支持此命令

我正在尝试编写一个 MySQL 脚本来将数据导入到我的 Linux 服务器的表中。这是名为 的脚本update.sql

SET @query = CONCAT("LOAD DATA LOCAL INFILE '", @spaceName, "' INTO TABLE tmp FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';"); 
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Run Code Online (Sandbox Code Playgroud)

而且,我编写了一个名为 bash 脚本main.sh

mysql -h "localhost" -u "root" "-pmypassword" "mydb" -e "set @spaceName=\"$1\";source update.sql;"
Run Code Online (Sandbox Code Playgroud)

然后我执行./main.sh France.list. 这France.list是我试图导入到我的数据库中的数据文件。

但是我收到一个错误:

文件中第 2 行的 ERROR 1295 (HY000):“update.sql”:准备好的语句协议尚不支持此命令

我发现了这个问题:
MySQL - Load Data Infile with variable path

那么,这是否意味着无法将参数传递给LOAD DATA …

mysql linux bash import parameter-passing

4
推荐指数
1
解决办法
7769
查看次数

标签 统计

mysql ×2

bash ×1

import ×1

linux ×1

parameter-passing ×1

php ×1

security ×1

sql ×1

sql-injection ×1