我正在学习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>
在文本框中输入并提交。
结果
关于php - 使用 htmlspecialchars(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31210140/