首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用htmlspecialchars()

使用htmlspecialchars()
EN

Stack Overflow用户
提问于 2015-07-03 15:26:15
回答 2查看 2.6K关注 0票数 2

我正在学习php,我偶然发现了htmlspecialchars(),它是用来防止黑客攻击的,怎么做?我在谷歌上读过它,不懂yet.Can请给你举个例子如何?

代码语言:javascript
复制
<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这样的url时,输出是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>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-03 16:22:28

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

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

你好,世界

为了防止这类攻击,我们使用htmlspecialchars()

如果没有htmlspecialchars(),代码将被执行。

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

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

结果

票数 2
EN

Stack Overflow用户

发布于 2015-07-03 15:52:29

这个函数用来防止XSS攻击它简单而强大,但是如果您想防止sql注入,则使用mysqli_escape_string代替。

关于您提供的代码,您应该在用户输入的"echo,print“中使用它。

代码语言:javascript
复制
$website = hmtlspecialchars($_POST['website']);

如果$website应该是url,则可以验证它:

代码语言:javascript
复制
$website = (filter_var($_POST['website'], FILTER_VALIDATE_URL) === false) ? '' : hmtlspecialchars($_POST['website']);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31210140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档