需要清理 TYPO3 存储库功能中的用户输入吗?

Posted

技术标签:

【中文标题】需要清理 TYPO3 存储库功能中的用户输入吗?【英文标题】:Sanitize user-input in TYPO3 repository function needed? 【发布时间】:2021-04-12 01:03:11 【问题描述】:

我有一个 TYPO3 存储库函数,可以创建类似查询。 我想知道,是否必须清理用户输入以防止 sql 注入,如果需要,如何处理。 我读了s.th。这是由学说层自动完成的。 我在 TYPO3 9.5 上。

请指教。

这是我的存储库类以及函数:

class ProductRepository extends \TYPO3\CMS\Extbase\Persistence\Repository

/**
 * find
 *
 * @return Tx_Extbase_Persistence_QueryResult
 */


public function findAllLike( $name) 
   $query = $this->createQuery();
   
    $orConstraints = array();
    $orConstraints[] = $query->like('productname',  '%'.$name.'%');
    $orConstraints[] = $query->like('tradename','%'.$name.'%');    

    $constraints[] = $query->logicalOr($orConstraints);       

    return $query->matching($query->logicalAnd($constraints))->execute();

【问题讨论】:

【参考方案1】:

是的,您必须逃避您的like 查询 请参阅 TYPO3 Querybuilder 上的文档 https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/QueryBuilder/Index.html#database-query-builder-escape-like-wildcards

【讨论】:

谢谢。我读过这个。但是,当我已经在存储库上下文中时,我该如何清理。我以前用过 $this->createQuery() 。我不想手动创建整个查询(包括左连接表)。有什么办法吗?

以上是关于需要清理 TYPO3 存储库功能中的用户输入吗?的主要内容,如果未能解决你的问题,请参考以下文章

在存储数据之前对其进行清理可能意味着存储的数据与用户输入的数据不同 - 这是常见的做法吗?

如何安全地为 bigquery 节点插入转义用户输入?可以在 bigquery.insert 节点库上使用参数化查询吗?

TYPO3:在控制器操作中创建一个 FE 用户

在存储到数据库之前或渲染之前清理 HTML? (ASP.NET 中的反 XSS 库)

Typo3 7.6 extbase 存储库匹配仅影响非本地化记录

新用户角色typo3 neos