我什至需要 `htmlspecialchars()` 来获取 textarea 的值吗
do I even need `htmlspecialchars()` for textarea's value
我有 staff.php
页面,其中包含员工的姓名、职位和 detail.When 用户需要编辑员工信息,他们将被发送到 edit.php
页面。edit.php
页面在 text field
上显示名称和标题,在 textarea
上显示详细信息
我的问题是,我什至需要 edit.php
中的 htmlspecialchars
page.I 我没有向用户页面打印任何内容,仅在那个 fields.But 我正在使用 htmlspecialchars
在 staff.php
打印给用户之前。
还开放给XSS Attack
吗?
代码
部分来自 staff.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>";
部分来自 edit.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>
XSS 保护不仅在变量要显示 在屏幕上时是必要的;无论上下文如何,只要用户生成的值用于构建 HTML 标记,就需要它。
有必要对 <textarea>
中的 PHP 变量调用 htmlspecialchars()
。考虑以下因素:
<?php
// Unsafe text in the variable
$detail4 = '</textarea><script>alert("XSS!");</script>';
?>
<textarea><?php echo $detail4; ?></textarea>
这会导致关闭 </textarea>
,然后是不安全的注入脚本(以及另一个关闭 </textarea>
浏览器可能会忽略)。
还需要对放入 value=""
属性的变量调用 htmlspecialchars()
,选择适当的常量以确保变量中的内部引号正确编码,以防止属性过早结束一个报价。如果你一直在属性上使用双引号,你可以接受默认的 ENT_COMPAT
,但如果你有时用单引号引用属性,请使用 ENT_QUOTE
.
<input type='text' name='staff_pos' value="<?php echo htmlspecialchars($sub_title4, ENT_QUOTES);?>" ...>
我有 staff.php
页面,其中包含员工的姓名、职位和 detail.When 用户需要编辑员工信息,他们将被发送到 edit.php
页面。edit.php
页面在 text field
上显示名称和标题,在 textarea
我的问题是,我什至需要 edit.php
中的 htmlspecialchars
page.I 我没有向用户页面打印任何内容,仅在那个 fields.But 我正在使用 htmlspecialchars
在 staff.php
打印给用户之前。
还开放给XSS Attack
吗?
代码
部分来自 staff.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>";
部分来自 edit.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>
XSS 保护不仅在变量要显示 在屏幕上时是必要的;无论上下文如何,只要用户生成的值用于构建 HTML 标记,就需要它。
有必要对 <textarea>
中的 PHP 变量调用 htmlspecialchars()
。考虑以下因素:
<?php
// Unsafe text in the variable
$detail4 = '</textarea><script>alert("XSS!");</script>';
?>
<textarea><?php echo $detail4; ?></textarea>
这会导致关闭 </textarea>
,然后是不安全的注入脚本(以及另一个关闭 </textarea>
浏览器可能会忽略)。
还需要对放入 value=""
属性的变量调用 htmlspecialchars()
,选择适当的常量以确保变量中的内部引号正确编码,以防止属性过早结束一个报价。如果你一直在属性上使用双引号,你可以接受默认的 ENT_COMPAT
,但如果你有时用单引号引用属性,请使用 ENT_QUOTE
.
<input type='text' name='staff_pos' value="<?php echo htmlspecialchars($sub_title4, ENT_QUOTES);?>" ...>