php - 使用 htmlspecialchars()

标签 php html htmlspecialchars

我正在学习php,我遇到了htmlspecialchars(),它是用来防止黑客攻击的,如何?我在谷歌上读过它,但还不明白。你能举个例子吗?

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
Website : <input type="text" name="website"><br>
<input type="submit" value="Submit" name="button">

</form>

<?php 
if($_SERVER["REQUEST_METHOD"] == "POST"){
    $website = $_POST['website'];
    echo "true";
if(empty($website)){

    echo  "empty";
    }
else{
    echo $website;
    }
}
?>    

当我输入这样的网址时 http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E输出是 http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E


当我删除 htmlspecialchars() 时 从 <form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>"> 输出是相同的。为什么 ? htmlspecialchars()有什么用?然后 ??

和 但是,请考虑用户在地址栏中输入以下 URL:

http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E


在这种情况下,上面的代码将被翻译为:(这是如何以及在哪里发生的?)

<form method="post" action="test_form.php/"><script>alert('hacked')</script>

最佳答案

如果您不使用 htmlspecialchars(),攻击者可能会执行代码,尤其是 javascript。

从您的代码中尝试使用 <h1>Hello, World!</h1> 提交表单作为输入,结果将是

Hello, World

并且为了防止这种类型的攻击,我们使用 htmlspecialchars()

没有 htmlspecialchars() 代码就会被执行

并提交<script>alert('alert');</script>结果将是警告框

提供<script>alert('alert');</script>在文本框中输入并提交。

enter image description here

结果 enter image description here

关于php - 使用 htmlspecialchars(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210140/

相关文章:

php - 反向 htmlspecialchars

php - 带占位符的 PDO 准备好的语句不起作用

html - flex-wrap 在 Safari 中不起作用并且向左浮动不是一个选项

c# - MVC Razor 隐藏输入和传递值

C++ tolower 特殊字符,如 ü

php - 通过 AJAX 发送特殊字符( "&lt"、 "&gt"、 "&amp")

php - 使用 SQL 查找最近的位置

php - 如何关闭 postgres 中的多个语句?

php - 从此数据类型中提取特定值

html - Div 未出现在 TOP : CSS