使用 htmlspecialchars()
use of htmlspecialchars()
我正在学习 php 并且我遇到了 htmlspecialchars() 它是用来防止黑客攻击的,怎么样?我在google上看过,没看懂yet.Can请你举例说明如何?
<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;
}
}
?>
当我像这样输入 url 时 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>
此功能用于防止 XSS 攻击它简单而强大但是如果你想防止 sql 注入使用 mysqli_escape_string 而不是
关于您提供的代码,您应该在用户
输入的 "echo , print" 中使用它
$website = hmtlspecialchars($_POST['website']);
如果 $website 应该是 url 你可以验证它 :
$website = (filter_var($_POST['website'], FILTER_VALIDATE_URL) === false) ? '' : hmtlspecialchars($_POST['website']);
如果您不使用 htmlspecialchars(),攻击者可能会执行代码,特别是 javascript。
根据您的代码尝试提交带有 <h1>Hello, World!</h1>
作为输入的表单,结果将是
Hello, World
并且为了防止此类攻击,我们使用 htmlspecialchars()
没有 htmlspecialchars() 代码被执行
同时提交<script>alert('alert');</script>
结果会出现提示框
在文本框中提供 <script>alert('alert');</script>
并提交。
结果
我正在学习 php 并且我遇到了 htmlspecialchars() 它是用来防止黑客攻击的,怎么样?我在google上看过,没看懂yet.Can请你举例说明如何?
<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;
}
}
?>
当我像这样输入 url 时 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>
此功能用于防止 XSS 攻击它简单而强大但是如果你想防止 sql 注入使用 mysqli_escape_string 而不是
关于您提供的代码,您应该在用户
输入的 "echo , print" 中使用它$website = hmtlspecialchars($_POST['website']);
如果 $website 应该是 url 你可以验证它 :
$website = (filter_var($_POST['website'], FILTER_VALIDATE_URL) === false) ? '' : hmtlspecialchars($_POST['website']);
如果您不使用 htmlspecialchars(),攻击者可能会执行代码,特别是 javascript。
根据您的代码尝试提交带有 <h1>Hello, World!</h1>
作为输入的表单,结果将是
Hello, World
并且为了防止此类攻击,我们使用htmlspecialchars()
没有 htmlspecialchars() 代码被执行
同时提交<script>alert('alert');</script>
结果会出现提示框
在文本框中提供 <script>alert('alert');</script>
并提交。
结果