首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修复此特定SQL注入孔的示例代码。

问修复此特定SQL注入孔的示例代码。
EN

Stack Overflow用户
提问于 2011-05-18 21:15:15
回答 2查看 451关注 0票数 2

请先读

在这个答案中:How to prevent SQL injection with dynamic tablenames?

Pekka指出了为什么这个代码:

代码语言:javascript
复制
$clas=$_POST['clas'];
$query="SELECT * FROM $clas ";

无法使用PDO或mysql-real_escape_string()修复。

谁能提供示例代码如何解决这个问题,这样新手就可以粘贴这些代码了吗?

(根据他的需要进行调整后),避免SQL注入。

请不要解释SQL-注入,我知道注入和PDO的所有情况,我只需要示例代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-18 21:20:44

您可以使用白名单来确保该值确实是您希望以这种方式访问的表之一。

示例:

代码语言:javascript
复制
$allowed_tables = array('table1', 'table2');
$clas = $_POST['clas'];
if (in_array($clas, $allowed_tables)) {
    $query = "SELECT * FROM `$clas`";
}

请注意,直接从GET或POST参数构造SQL查询通常是个坏主意,但白名单可以使其安全。

票数 5
EN

Stack Overflow用户

发布于 2011-05-18 23:08:06

您可以使用for转义:P

代码语言:javascript
复制
$clas = str_replace('`','\\`',$_POST['clas']);
$query = "SELECT * FROM \`{$clas}\`";

所以,这是个非常糟糕的主意。

做不同的事。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6051125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档