Php 在这种情况下不需要Htmlspecialchars?
我正在开发一个应用程序,我正在阅读有关实施安全措施的资料。我设置了一个类来自动生成表单元素,该类在html中嵌入php字符串变量来创建字段。然而,我注意到,在我去实现它时,没有必要使用htmlspecialchars()。因此,我试图假恶意地扭转这一局面:Php 在这种情况下不需要Htmlspecialchars?,php,security,Php,Security,我正在开发一个应用程序,我正在阅读有关实施安全措施的资料。我设置了一个类来自动生成表单元素,该类在html中嵌入php字符串变量来创建字段。然而,我注意到,在我去实现它时,没有必要使用htmlspecialchars()。因此,我试图假恶意地扭转这一局面: <input type="text" name="email">... rest of html 。。。html的其余部分 进入: 但是,在使用htmlspecialchars()之前和之后,当我尝试编辑前端html时,我
<input type="text" name="email">... rest of html
。。。html的其余部分
进入:
但是,在使用htmlspecialchars()之前和之后,当我尝试编辑前端html时,我的浏览器会提供以下信息:
<input type="text" name="email"><br><br>
type='text'//我通常使用的
$this->type='text“name=”name“>
'//我试图操作html
$output=“每当您获取一些文本并将其作为字符串插入到一些HTML中时,都需要使用htmlspecialchars
(除非您知道文本不会包含任何在HTML中具有特殊意义的字符,但即使这样,使用htmlspecialchars
也是一个好习惯)
我无法解释为什么未指定的输入,当运行未指定的代码,然后运行浏览器的解析器(具有错误恢复功能)时,会给出该输出
问题更新后:
$this->type = 'text" name="name"><br><br>' //my attempt to manipulate the html
$output = "<input type='$this->type' name='$this->name'";
$this->type='text“name=”name“>
'//我试图操作html
$output=“每当您获取一些文本并将其作为字符串插入到一些HTML中时,都需要使用htmlspecialchars
(除非您知道文本不会包含任何在HTML中具有特殊意义的字符,但即使这样,使用htmlspecialchars
也是一个好习惯)
我无法解释为什么未指定的输入,当运行未指定的代码,然后运行浏览器的解析器(具有错误恢复功能)时,会给出该输出
问题更新后:
$this->type = 'text" name="name"><br><br>' //my attempt to manipulate the html
$output = "<input type='$this->type' name='$this->name'";
$this->type='text“name=”name“>
'//我试图操作html
$output=“尝试此操作:
$this->type = 'text\' name="name"><br><br>' //my attempt to manipulate the html
$this->type='text\'name=“name”>
'//我试图操作html
它应该打断HTML,因为属性值的分隔符是单引号,现在它们也出现在属性文本中
请确保不要使用任何像firebug这样复杂的DOM检查器,而是查看服务器发出的纯源代码。尝试以下操作:
$this->type = 'text\' name="name"><br><br>' //my attempt to manipulate the html
$this->type='text\'name=“name”>
'//我试图操作html
它应该打断HTML,因为属性值的分隔符是单引号,现在它们也出现在属性文本中
请确保不要使用任何像firebug这样的复杂DOM检查员,但是要查看服务器发出的纯源代码。我添加了希望有用的详细信息。我添加了希望有用的详细信息。您如何测试确保查看源代码而不是查看开发工具或firebug。我使用firebug,但是其他echo语句显示为它们的html表单,这一条的行为就像我使用了htmlspecialchars()使用浏览器查看源代码一样。。。dom查看器显示它的解释方式,但并不总是与它的返回方式相同。查看源代码会显示相同的结果。您如何测试确保查看源代码而不是查看开发工具或firebug。我使用的是firebug,但其他echo语句显示为它们的html表单,此语句的行为与我使用的htmlspecialchars()类似使用浏览器查看源。。。dom查看器显示它的解释方式,但并不总是与它的返回方式相同。查看源代码会显示相同的结果。您的操作有效。Htmlspecialchars()修复了该操作。非常感谢。你的操纵奏效了。Htmlspecialchars()修复了该操作。非常感谢。