Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在这种情况下不需要Htmlspecialchars?_Php_Security - Fatal编程技术网

Php 在这种情况下不需要Htmlspecialchars?

Php 在这种情况下不需要Htmlspecialchars?,php,security,Php,Security,我正在开发一个应用程序,我正在阅读有关实施安全措施的资料。我设置了一个类来自动生成表单元素,该类在html中嵌入php字符串变量来创建字段。然而,我注意到,在我去实现它时,没有必要使用htmlspecialchars()。因此,我试图假恶意地扭转这一局面: <input type="text" name="email">... rest of html 。。。html的其余部分 进入: 但是,在使用htmlspecialchars()之前和之后,当我尝试编辑前端html时,我

我正在开发一个应用程序,我正在阅读有关实施安全措施的资料。我设置了一个类来自动生成表单元素,该类在html中嵌入php字符串变量来创建字段。然而,我注意到,在我去实现它时,没有必要使用htmlspecialchars()。因此,我试图假恶意地扭转这一局面:

<input type="text" name="email">... rest of html
。。。html的其余部分
进入:



但是,在使用htmlspecialchars()之前和之后,当我尝试编辑前端html时,我的浏览器会提供以下信息:

<input type="text&quot; name=&quot;email&quot;&gt;&lt;br&gt;&lt;br&gt;
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()修复了该操作。非常感谢。