Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.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防止恶意HTML注入_Php_Html_Security_Hyperlink_Code Injection - Fatal编程技术网

Php 使用htmlspecialchars防止恶意HTML注入

Php 使用htmlspecialchars防止恶意HTML注入,php,html,security,hyperlink,code-injection,Php,Html,Security,Hyperlink,Code Injection,我一直在提到某个网站关于如何使用htmlspecialchars来防止恶意代码注入,但我现在比以前更困惑了。假设黑客在文本框中输入以下内容: <a href="http://nastywebsite.com">Nasty Website</a> (如果对上述实体进行解码,它们将显示为:讨厌的网站) 假设黑客已将上述代码插入在线调查的FIRST_NAME文本框,因此恶意代码将与“FIRST_NAME”属性

我一直在提到某个网站关于如何使用htmlspecialchars来防止恶意代码注入,但我现在比以前更困惑了。假设黑客在文本框中输入以下内容:

<a href="http://nastywebsite.com">Nasty Website</a>
(如果对上述实体进行解码,它们将显示为:讨厌的网站)

假设黑客已将上述代码插入在线调查的FIRST_NAME文本框,因此恶意代码将与“FIRST_NAME”属性关联。假设此在线调查的所有者希望通过以下代码防止HTML注入:

<?php
  $first_name = $_POST['first_name'];
  $first_name = htmlspecialchars( $first_name );
  echo $first_name;
?>

而不是超链接。如果用户看到的是实体而不是超链接,他就无法下载恶意代码。我不明白。用户是否看到实体或超链接?

如果不转义字符串,用户将看到:

<a href="http://nastywebsite.com">Nasty Website</a>

如果你逃跑,他会看到:

<a href="http://nastywebsite.com">Nasty Website</a>

Html呈现器将实体解码为字符,而不将其解释为有效标记


如果您不想在输入中使用html标记,可以使用。

Waldson,非常感谢您的帮助。你用6行文字简明扼要地解释了一个问题,而我提到的一些网站却无法用60行文字正确解释这个问题!