代码之家  ›  专栏  ›  技术社区  ›  Coder

我甚至需要“htmlspecialchars()”来获取textarea的值吗

  •  5
  • Coder  · 技术社区  · 9 年前

    我有 staff.php 包含员工姓名、职位和详细信息的页面。当用户需要编辑员工信息时,他们将被发送到 edit.php 编辑.php 页面显示名称和标题 text field 和详细信息 textarea

    我的问题是,我是否需要 htmlspecialchars 在里面 编辑.php 页面。我没有向用户页面打印任何内容,只是在这些字段上。但我使用 html专用车 在…上 员工.php 在打印给用户之前。

    它仍然对 XSS Attack ?

    密码

    部件来自 员工.php

    $staff.="<div id='sob'>".htmlspecialchars($title)."<br>".htmlspecialchars($sub_title)."<div><a href='edit.php?pid=".htmlspecialchars($pro_id)."'><input type='submit' id='editx' name='editx' value='Edit'></a></div><div id=''><br>".htmlspecialchars($detail)."</div><hr id='h'></div>";
    

    部件来自 编辑.php

    if(isset($_GET["pid"])){
      $name4=$title;            //
      $sub_title4=$sub_title;   //using prepared statement  
      $detail4=$detail;         //
      }
    
      HTML part at edit.php
    
     <input type='text' id='staff_name' name='staff_name' value="<?php echo $name4;?>" required>
     </br><input type='text' id='staff_pos' name='staff_pos' value="<?php echo $sub_title4;?>" required>
     </br><textarea id='staff_detail' name='staff_detail' cols='30' rows='6'  required><?php echo $detail4;?></textarea></br>
    
    1 回复  |  直到 9 年前
        1
  •  9
  •   Adrian Cid Almaguer Abhishek    9 年前

    当变量需要 显示 在屏幕上;每当使用用户生成的值来构建HTML标记时,无论上下文如何,都需要它。

    需要呼叫 htmlspecialchars() 放置在 <textarea> 。请考虑以下事项:

    <?php
        // Unsafe text in the variable
        $detail4 = '</textarea><script>alert("XSS!");</script>';
    ?>
    
    <textarea><?php echo $detail4; ?></textarea>
    

    这将导致 </textarea> 然后是不安全的注入脚本(以及另一个关闭 </文本区域> 浏览器可能会忽略)。

    还需要拨打 htmls特殊卡() 关于放入的变量 value="" 属性,选择适当的常量以确保变量中的内部引号正确编码,以防止属性过早地以引号结束。如果在属性上始终使用双引号,则可以接受默认值 ENT_COMPAT ,但如果有时使用单引号引用属性,请使用 ENT_QUOTE .

    <input type='text' name='staff_pos' value="<?php echo htmlspecialchars($sub_title4, ENT_QUOTES);?>" ...>