簡體   English   中英

Typo3 v4.5.30會自動轉義字符串嗎?

[英]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的地方,所以這種擔心對我來說只是第二自然。

TYPO3自動轉義POST變量,這是正確的。

在typo3中訪問它們的正確方法是t3lib_div::_POST($name) ,它將使您不被轉義。

請參閱文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM