如何让$ POST更安全?

时间:2012-05-07 04:57:02

标签: php security

这是我从Facebook工程页面获得的示例代码。

<?php
if ($_POST['name']) {
?>
    <span>Hello, <?=$_POST['name']?>.</span>
<?php 
} else {
?>
<form method="post">
What is your name?<br>
<input type="text" name="name">
<input type="submit">
</form>
<?php
}

它表示上述代码不受保护,因为它对跨站点脚本开放。正确的方法是通过htmlspecialchars()传递$ _POST [&#39; name&#39;]。但是,他们表示编程实践很差。

总是通过htmlspecialchars()低效传递$ _POST变量吗?

我无法想办法让它变得安全。他们介绍了我不愿意使用的XHP。

参考:https://www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to-write-php/294003943919

2 个答案:

答案 0 :(得分:2)

彻底阅读此链接,它将帮助您了解表单验证和安全目的 - http://phpsec.org/projects/guide/2.html

答案 1 :(得分:0)

  

正确的方法是通过htmlspecialchars()传递$ _POST ['name']。但是,他们表示编程实践很差。

这本身并不差。问题是,当您每次将文本内容放入HTML时都必须键入htmlspecialchars时,您很可能会忘记一个,留下漏洞。

该页面正确地说,最好是使用默认情况下HTML-escape 的模板语言,这样您就不必考虑它了。这是大多数Web框架到目前为止所学到的教训,但原始PHP仍然没有方便的方法。