相关疑难解决方法(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准备好的语句是否足以阻止SQL注入?

假设我有这样的代码:

$dbh = new PDO("blahblah");

$stmt = $dbh->prepare('SELECT * FROM users where username = :username');
$stmt->execute( array(':username' => $_REQUEST['username']) );
Run Code Online (Sandbox Code Playgroud)

PDO文件说:

准备语句的参数不需要引用; 司机为你处理.

这真的是我需要做的就是避免SQL注入吗?这真的很容易吗?

如果它有所作为,你可以假设MySQL.另外,我真的只是对使用针对SQL注入的预处理语句感到好奇.在这种情况下,我不关心XSS或其他可能的漏洞.

php security pdo sql-injection

631
推荐指数
6
解决办法
20万
查看次数

PDO准备的陈述有多安全

不久前开始使用PDO准备好的语句,据我所知,它可以为您完成所有的转义/安全性.

例如,假设$ _POST ['title']是一个表单字段.

$title = $_POST['title'];
$query = "insert into blog(userID, title) values (?, ?)"
$st = $sql->prepare($query);
$st->bindParam(1, $_SESSION['user']['userID'], PDO::PARAM_INT);
$st->bindParam(2, $title);
$st->execute();
Run Code Online (Sandbox Code Playgroud)

这真的很安全吗?我还要做别的吗?还有什么需要考虑的?

谢谢.

php mysql security pdo sql-injection

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

什么是函数mysql_real_escape_string的PDO等价物?

我使用修改我的代码mysql_*PDO.在我的代码中我有mysql_real_escape_string().在PDO中,这相当于什么?

php mysql pdo sql-injection

39
推荐指数
3
解决办法
8万
查看次数

在Laravel 4中转义原始SQL查询

如何在Laravel 4中转义传递给原始查询的参数?我期待类似的东西DB::escape()(从Laravel 3响起铃声)并尝试DB::quote()(我认为可以通过PDO对象获得)

$query = DB::select("SELECT * FROM users WHERE users.id = " . DB::escape($userId));
Run Code Online (Sandbox Code Playgroud)

我们不能将select方法与占位符一起使用,因为上面只是我们尝试实现的简化示例.我们有一个大型自定义查询,其中包含一些无法适应查询构建器的嵌套选择查询.

插入Laravel 4之前逃避某些事情的最佳方法是什么?

编辑:

我刚刚发现你可以访问PDO对象并以这种方式使用quote函数.这仍然是最好的方法,还是有更简单的方法来访问此功能?

DB::connection()->getPdo()->quote("string to quote");
Run Code Online (Sandbox Code Playgroud)

php mysql pdo laravel laravel-4

32
推荐指数
5
解决办法
4万
查看次数

如何在pdo中转义字符串?

我想知道如何在pdo中转义字符串.我一直在逃避弹簧,如下面的代码,但现在用pdo我不知道怎么做

$username=(isset($_POST['username']))? trim($_POST['username']): '';
$previlage =(isset($_GET['previlage']));
$query ="SELECT * FROM site_user 
WHERE username = '".mysql_real_escape_string($_SESSION['username'])."' AND  previlage ='Admin'";
$security = mysql_query($query)or die (mysql_error($con));
$count = mysql_num_rows($security);
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

7
推荐指数
1
解决办法
3万
查看次数

如何在PDO中使用/编写mysql_real_escape_string?

在我的代码中我试图将mysql_real_escape_string转换为PDO语句.有人有关于如何在PDO中编写mysql_real_escape_string的提示吗?

我在两行中使用mysql_real_escape_string:$ userName = mysql_real_escape_string($ _ POST ['username']); $ password = sha1(mysql_real_escape_string($ _ POST ['password']));

<?php
ob_start();
session_start();
include("../database/db.php");

$userName = mysql_real_escape_string($_POST['username']);
$password = sha1(mysql_real_escape_string($_POST['password']));
echo "<br>user: " . $userName;
echo "<br> pw: " . $password;

$query = "select * from tbladmin where admin_usr_name='$userName' and admin_pwd='$password'";

$res = mysql_query($query);

// $rows = $res->fetch(PDO::FETCH_ASSOC); 
$rows = mysql_fetch_assoc($res);
echo "<br>numrows" . mysql_num_rows($res) . "<br>";

// $find = $query->prepare("select * from tbladmin where admin_usr_name='$userName' and admin_pwd='$password'");
// $find->execute();
// if ($find->fetchColumn() > 0) …
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

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

标签 统计

php ×7

mysql ×6

pdo ×6

sql-injection ×4

security ×3

laravel ×1

laravel-4 ×1

sql ×1