【问题标题】:How to protect search page on PHP with PDO statement如何使用 PDO 语句保护 PHP 上的搜索页面
【发布时间】:2014-02-11 07:29:25
【问题描述】:

我有一个带有代码的简单搜索页面:

$keywords = str_replace(' ','%',$_POST['keywords']);
if(isset($_POST['search']) && !empty($keywords)) {
$stmt = $pdo->prepare("SELECT ... WHERE `tags` LIKE ? OR `tags` LIKE ? OR `tags` LIKE ?");
$stmt->execute(array("$keywords %", "% $keywords %", "% $keywords"));
foreach($stmt as $row){
  echo ...;
 }
}

如何尽可能地保护这个页面?问题包括:对 PDO 使用 mysql_real_escape_string 和 stripslashes 是否正确,或者还有其他类似的东西?

ps。目前我只使用 include('../dbconfig.php') 将 dbconfig 上移一级并从 public_html 文件夹中移出

【问题讨论】:

  • “对 PDO 使用 mysql_real_escape_string 和 stripslashes 是正确的还是有其他类似的东西?” - 你还没有理解准备好的语句 做什么我>。它们分别将查询和数据发送到 DBMS,因此不需要任何形式的额外转义。
  • 准备足够保护。如果您想转义可能在$_POST['keywords'] 中的% 字符,也许您必须分解关键字并将其与$pdo->quote 重新连接

标签: php mysql security pdo


【解决方案1】:

您正在使用准备好的语句,这是正确的方法。我建议使用 PHP filters 清理用户之前提交的数据。

 $keywords=filter_var($_POST['keywords'], FILTER_SANITIZE_STRING);

【讨论】:

    猜你喜欢
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2015-11-03
    • 2018-08-12
    • 1970-01-01
    • 2019-07-22
    相关资源
    最近更新 更多