【发布时间】:2015-03-08 03:20:53
【问题描述】:
我有一个页面生成一个记录列表,我想通过多种可能性过滤或缩小范围。因此,我正在考虑将可能的 "AND" 语句添加到 SQL 查询中。用户生成的数据不会进入查询,除了传递给查询的 LIMIT 部分的分页。
我的问题:
-
因为我没有使用 bindParam,所以在 LIMIT 之后是否可以进行注入?
$start_record = $_GET['page']; $ids = array('pid_b', 'pid_l', 'pid_g' ); $qMarks = str_repeat('?,', count($ids) - 1) . '?'; // THIS MY CONDITION FOR TESTING PURPOSES ONLY $testVar = 1; // NOW WE BUILD THE QUERY $sqlQuery = "SELECT * FROM inventory_tbl "; $sqlQuery .= "WHERE `consignor_record_id` IN ($qMarks) '; $sqlQuery .= ($testVar == 1 ? " AND `inventory_status` <> 'active' " : ""); $sqlQuery .= "ORDER BY `created_date` DESC LIMIT $start_record, 50 ;"; $productSearch = $dbh->prepare( $sqlQuery );
【问题讨论】:
-
我不相信它除了你所说的
LIMIT。我很好奇@cmorrissey 是怎么想的。 -
本着教育精神,介意解释一下吗?
-
@JonathanKuhn,他的问题是在
LIMIT之后是否可以注射,绝对是,他并没有说它是开放的 -
啊,是的。我读错了。谢谢。
-
@JonathanKuhn,详细的评论应该是一个答案。它足以回答这个问题。