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

使用LIKE'%的SQL参数化查询?%'PHP

我在php中有一个Search函数,并使用参数化查询创建它以使其安全.

$words = $_POST['words']//words is the form that has the words submitted by the user 
$array = explode(',', $words);
$con = mysqli_connect("localhost","user","pass","database");

$stmt = $con->prepare(" SELECT column_name FROM table WHERE column_name LIKE ?")
foreach($array as $key) { //searches each word and displays results   
  $stmt->bind_param('s', $key)
  $stmt->execute();
  $result = $stmt->get-result();

  while($row = $result->fetch_assoc(){
    echo $row["column_name"]
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我想要$ stmt语句

  $stmt = $con->prepare(" SELECT column_name FROM table WHERE column_name LIKE '%?%' ")
Run Code Online (Sandbox Code Playgroud)

否则人们必须输入column_name的整个值才能找到它.

php mysql

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

标签 统计

mysql ×2

php ×2

security ×1

sql ×1

sql-injection ×1