错字框架中是否有任何 sql 注入保护?或者我必须自己负责构建查询?
我找到了 prepare_SELECTqueryArray,但没有示例它应该是什么样子。我的 TYPO3 版本是 4.7。我在 TYPO3 v.6.1 的网站上发现了这个 prepare_SELECTqueryArray。
错字框架中是否有任何 sql 注入保护?或者我必须自己负责构建查询?
我找到了 prepare_SELECTqueryArray,但没有示例它应该是什么样子。我的 TYPO3 版本是 4.7。我在 TYPO3 v.6.1 的网站上发现了这个 prepare_SELECTqueryArray。
准备好的语句至少在 TYPO3 4.5 中可用,您可以在此处看到 [1] 和 [2]
准备好的查询可能如下所示
$preparedQuery = $this->link->prepare_SELECTquery('fieldblob,fieldblub', $table, 'id=:id', '', '', '', array(':id' => 1));
$preparedQuery->execute();
$result = $preparedQuery->fetch();
或者
$preparedQuery = $this->link->prepare_SELECTquery('fieldblob,fieldblub', $table, 'id=:id');
$preparedQuery->bindValues(array(':id' => 1));
$preparedQuery->execute();
$result = $preparedQuery->fetch();
[1] https://github.com/TYPO3/TYPO3.CMS/blob/TYPO3_4-5/t3lib/class.t3lib_db.php
[2] https://github.com/TYPO3/TYPO3.CMS/blob/TYPO3_4-5/t3lib/db/class.t3lib_db_preparedstatement.php
在许多地方,值是自动引用的。在 prepare_* 函数中,默认情况下所有参数都被引用。
如果您使用 exec_* 查询,则需要自行转义 where 部分的值。为此使用 $GLOBALS['TYPO3_DB']->fullQuoteStr($value, $tablename) 。
请注意,您也可以使用 TypoScript 创建 SQL 注入。如果您使用 CONTENT-Object,您可以将 GET/POST 数据插入 where 子句。使用 intval 或 select.markers 创建 SQL 注入保存查询。