相关疑难解决方法(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代码的模式/模板之后接受参数,并且,我想,这就是保证我们防止sql注入的原因.

对于模拟准备好的语句,没有服务器支持,
它能保证我们不反对它吗?

mysql sql security sql-injection

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

调试 SilverStripe 准备好的语句

使用 3.2 中引入的 ORM 更改调试 DB 查询变得更加困难。运行$dataList->sql()为您提供准备好的语句(形式为SELECT * FROM Table WHERE Title = ?),这是一个好的开始。?showqueriesURL 变量的作用相同。

如何获取语句的值或参数是我感兴趣的。我知道https://github.com/lekoala/silverstripe-debugbar我想知道是否有办法在 XDebug 控制台中无需任何扩展即可获取它们(或仅通过var_dump:ing 某些东西)。

我快速浏览了silverstripe-debugbar的代码,但没有找到一个易于使用的解决方案。如果它在某个地方,请指点我:)

php mysql debugging prepared-statement silverstripe

5
推荐指数
0
解决办法
168
查看次数