是否可以通过使用base64来避免SQL注入?



我正在开发一个应用程序,但我不确定,如何保护数据库免受SQL注入。

我想问,例如在使用base64的任何数据输入表(仅限字符串)的情况下。

例如,在PHP代码中,它看起来像这样

$data = $_POST['input'];
$base64 = base64_encode($data);
mysqli_query($conn,"INSERT INTO table(`string`) VALUES ('$base64')");

不,正如您刚刚在代码中演示的那样(现在编辑以包含适当的字符串格式),不可能阻止SQL注入。但是要滥用这个漏洞是非常困难的。然而,我看不出你为什么要考虑这个。为什么不使用预处理语句呢?

唯一安全的方法是永远不允许在查询中没有被列入白名单的任何变量输入。这意味着应该使用准备好的语句对所有数据部分进行参数化和绑定。动态SQL查询部分需要是常量、硬编码字符串字面值或适当的白名单。

你不能100%阻止SQL注入,因为这是程序员的错误。总会有初级开发人员将变量直接连接到SQL中。Base64不是针对SQL注入的预防措施。这是一个令人讨厌的解决方案,但如果允许开发人员犯错误并在SQL中放入变量,那么开发人员也会忘记对字符串进行Base64编码。添加这个额外的步骤只会使引入SQL注入更容易。

最新更新