[英]does Typo3 v4.5.30 auto escape strings?
我正在尝试调试一个问题(不是我自己的代码),因为在重新保存该项目时,字符串会多次转义并重新转义。
该代码使用mysql_real_escape_string,但是即使关闭了魔术引号,在调用我的操作时,发布变量也已被引号,因此对mysql_real_escape_string的调用将引号加倍。 然后每次重新保存物品时,斜线就会越来越多。
因此,在进入数据库之前,我需要确保该项目已被转义(一次),但在页面上显示时却未转义。
我的动作开始如下:
public function adminAction() {
$prizes = $_POST['tx_xxx_bingofrontend']['prize'];
//at this point my prize[] elements are already quoted, why?
foreach ($prizes as $key => $prize) {
foreach ($prize as $field => $value) {
// echo "Magic quotes is " . (get_magic_quotes_gpc() ? "ON" : "OFF");
// echo strip_tags($value) ;die;
// OFF gets printed
$cleanedValues[$field] = mysql_real_escape_string(strip_tags($value));
}
.... more code
我正在使用typo3 v4.5.30,是否在我的操作代码触发前在某个地方进行了错字转义设置或可能进行了扩展api调用?
如何确保正确显示字符串并正确保存字符串?
谢谢!
更新:我现在有以下代码:
public function adminAction() {
$postsvars = t3lib_div::_POST();
$prizes = $postsvars['tx_xxx_xxfrontend']['prize'];
foreach ($prizes as $key => $prize) {
foreach ($prize as $field => $value) {
//echo "Magic quotes is " . (get_magic_quotes_gpc() ? "ON" : "OFF");
// echo strip_tags($value) ;die;
$cleanedValues[$field] = $GLOBALS['TYPO3_DB']->quoteStr(strip_tags($value),'tx_xxx_domain_model_prize' );
它在每次更新和创建之前运行,并正确添加了斜杠(我不确定它如何在调用中使用我的表名,但似乎正常。) 但是,当我读起东西并删除斜线以在模型中显示时,如下所示:
public function UnEscapePrize( ){
$this->setTitle(stripslashes( $this->getTitle()));
..... other vars get un-escaped
}
斜杠的删除将保存到数据库中,这不是我想要的。 我只想删除它们以进行查看。 我该怎么办?
更新2:还是我什么都不担心? 使用默认更新和添加方法时,typo3 4.5.3 / extbase 1.3是否容易受到sql注入攻击? 如果使用字符串concat将sql拼凑在一起,则可能是,但是如果使用prepared语句,则不是。 我来自仍然使用大量字符串concat sql的地方,所以这种担心对我来说只是第二自然。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.