亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 表單將 HTML 特殊字符作為純文本發布

PHP 表單將 HTML 特殊字符作為純文本發布

PHP
慕的地8271018 2022-01-02 15:48:10
我有一個基本的表單,可以通過 PHP 將評論提交到數據庫并通過 AJAX 將它們顯示在頁面上,一切正常,但問題是簡單的 HTML 代碼類似于<script>alert('Message')</script>或<h1>Hi!</h1>顯示有效的 HTML,并由客戶端執行。經過研究,我發現 PHPhtmlspecialchars()函數可以阻止 XSS 代碼的執行:<form method="post" action="<?PHP echo htmlspecialchars($_SERVER['PHP_SELF']);?>" onsubmit="return post();">    <textarea id="comment"></textarea>    <input type="submit" value="Submit"></form>處理表單的 PHP 文檔是這樣的:<?phperror_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);$host="localhost";$username="user";$password="password";$databasename="comments";$connect=mysql_connect($host,$username,$password);$db=mysql_select_db($databasename);if(isset($_POST['user_comm'])){  $comment = mysql_real_escape_string($_POST['user_comm']);  $insert=mysql_query("insert into comments values('','$comment',CURRENT_TIMESTAMP)");  $id=mysql_insert_id();  $select=mysql_query("select comment,post_time from comments where comment='$comment' and id='$id'");  if($row=mysql_fetch_array($select))  {      $comment = mysql_real_escape_string($row['comment']);    $time=$row['post_time'];  ?>    <div class="comment_div">       <p class="comment"><?php echo stripslashes($comment);?></p>         <p class="time"><?php echo date('l d M Y - H:i a', strtotime($time));?></p>      </div>  <?php  }exit;}?>但是在我的情況下,這不起作用,并且在發送消息后客戶端仍會執行 Javascript 代碼。如何在評論中將 HTML 特殊字符顯示為純文本以防止出現這種情況?
查看完整描述

2 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

htmlspecialchars() 用它們的 html 代碼替換特殊字符,比如 < by &lt;

保護表單的動作沒有意義,保護你的評論的顯示:

<p class="comment"><?php echo htmlspecialchars($comment);?></p>


查看完整回答
反對 回復 2022-01-02
?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

htmlspecialchars() 用編碼版本替換 HTML 特殊字符,例如 < 被替換為 &lt;

除了保護表單的“動作”外,您還需要使用它來對任何輸入變量進行編碼,這些變量的數據稍后可能會被注入到屏幕上的 HTML 中。

編碼這些值的好時機是在將它們插入數據庫之前,以便以后使用該數據時不再有危險。

因此,在您的示例中,您只有“評論”字段,因此您可以在準備數據庫插入之前像這樣對其進行編碼:

$comment = htmlspecialchars($_POST['user_comm']);
$comment = mysql_real_escape_string($comment);

注意請注意我關于使用mysql_query和相關功能的評論(在上面的主要評論部分)。您不應該將這些用于任何新代碼,而對于舊代碼,您應該計劃替換它。盡快切換到支持的庫。


查看完整回答
反對 回復 2022-01-02
  • 2 回答
  • 0 關注
  • 193 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號