使用category name vs category id作为传递给$\u get的值

xj3cbfub  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(326)

我目前正在开发一个网站,将部署一旦完成,所以我担心我的网站的安全性。
我了解到,攻击者可以使用$get进行联合和加载文件攻击,因为通常人们会使用.php?catid=1获取数据并将其显示在页面上。
不过,我想知道,如果改用.php?catname=product\ 1这样的名称,是否有助于防止攻击,因为获取数据的查询将变成这样:
$sql=“从类别\表中选择*类别\名称='”$_获取['catname']。“'”;
由于现在的值是一个字符串,查询需要一个单引号('),因为id是integer,所以在此之前不需要它。
这个单引号可以阻止联合查询,但我不确定这是否足够

2guxujil

2guxujil1#

使用mysqli准备:

  1. $category_name = $_GET['catName'];
  2. /* create a prepared statement */
  3. if ($stmt = $mysqli->prepare("SELECT category_name FROM category_table WHERE category_name=?")) {
  4. /* bind parameters for markers */
  5. $stmt->bind_param("s", $category_name );
  6. /* execute query */
  7. $stmt->execute();
  8. /* bind result variables */
  9. $stmt->bind_result($category_name);
  10. /* fetch value */
  11. $stmt->fetch();
  12. echo($category_name);
  13. /* close statement */
  14. $stmt->close();
  15. }

更多信息:http://php.net/manual/en/mysqli.prepare.php
再见;)

展开查看全部

相关问题