2017-06-03 128 views
1

我使用的HTML代碼中的PHP象下面這樣:當我在PHP代碼中使用HTML代碼時它安全嗎?

  echo '<span class="input-group-addon"><i class="glyphicon 
      glyphicon-pencil w3-large" name="topic_subject"> subject</i> 
      </span> 
       <br /> 
       <textarea name="post_content" id="editor1"></textarea> 
       <br /> 
       <div class="w3-col s1 m1 l1"><p></p></div> 
       <div class="w3-left"> 
       <button class = "w3-button w3-xlarge tableButtons w3-middle" 
       id="save">save</button> 
       &nbsp;&nbsp; 
       <a onclick="history.go(-1);" class="w3-button w3-xlarge 
       tableButtons w3-left">cancel</a> 
       </div>     
       </form>'; 

我使用單引號然後我用雙引號代替反斜槓逃脫。 這就是安全或不安全?

+0

我投票作爲題外話,因爲它所需要的代碼審查(以及基於此從而過寬/意見)來關閉這個問題。它可能會被調整爲[code review stackexchange](http://codereview.stackexchange.com/help/on-topic)的主題。 – Quentin

+0

安全嗎?用PHP的方式,是的,因爲你只是回聲一個字符串。 –

+0

小修正,使用mysqli_real_escape_string(),不推薦使用mysql。你的代碼是100%安全的,不用擔心,當你只想在頁面上打印文本時沒有問題。 –

回答

0

確實很安全,但不是因爲您使用單引號。迴應這個字符串與製作一個普通的html頁面的結果是一樣的。只要你知道你輸出的內容,從你的php輸出html通常是安全的。

使用單引號確實具有優勢,雖然張貼HTML字符串的時候,那是因爲單引號你沒有逃跑就在你的HTML的雙引號。

例如爲:echo '<span class="input-group-addon">';將成爲echo "<span class=\"input-group-addon\">";如果你要使用雙引號。

直接從你的HTML表單使用數據查詢或過濾器是一個更大的風險,因爲它容易受到SQL注入。欲瞭解更多信息,我想向您推薦an article on the PHP.net website關於它是什麼以及如何預防它。

+0

「使用單引號確實提供了發佈html字符串時的優勢,這是因爲使用單引號時,您的html中沒有雙引號轉義字符」 - 將「single」的每個實例與「double」交換並且這同樣有道理。 – Quentin

-1

這應該是完全安全的,因爲您只是輸出代碼。但是,如果您正在取代碼並將其存儲在數據庫中,則應使用 mysql_real_escape_string() http://php.net/manual/en/mysqlinfo.api.choosing.php

只是要清楚,這是一個非官方的意見,如果有些瘋狂的新的黑客出來,不要怪我!哈哈

+0

當我存儲數據庫中的數據我用準備好的發言,所以我認爲它是安全的,而無需使用mysql_real_escape_string() – Beginner

+1

** **警告:您正在使用[**的**過時的數據庫API(http://stackoverflow.com/ q/12859942/19068)已經**完全從最新版本的PHP中刪除。你應該使用[現代替換](http://php.net/manual/en/mysqlinfo.api.choosing.php)。 – Quentin

+0

對不起,你很對,不知道我在想那個。編輯 – Polymer