首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$_GET安全,$_POST安全最佳实践

$_GET安全,$_POST安全最佳实践
EN

Stack Overflow用户
提问于 2012-03-31 13:12:56
回答 4查看 9.5K关注 0票数 3

这是一个很好的主题,但我想在几种不同的情况下,得到一些关于使用来自用户变量的数据的方法的确认。

  1. 变量从未在数据库中使用,也从未存储过,只显示在屏幕上供用户使用。使用哪种函数来确保html或javascript不会出错?
  2. 变量被输入数据库,并在SQL查询中使用。变量
  3. 同时执行.

现在我是xss_clean和strip_tags。我一直都这么做,只是自动驾驶。有更好的技术吗?如果有同样的问题,我很抱歉。我想应该有,虽然我找不到像这样彻底的。

干杯。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-31 13:15:27

htmlspecialchars

  • Use
  1. 在输出时使用适当的函数,在上下文中,这是
    1. 准备的语句
    2. 参见1和2。-取决于您是在显示变量还是在查询中使用它。
票数 5
EN

Stack Overflow用户

发布于 2012-03-31 13:27:17

PHP中最糟糕的错觉之一是,$_GET$_POST与安全性有任何关系。

重要的不是来源,而是目的地。

  • --如果您必须处理数据库,规则总是一样的,无论数据来自$_POST、SOAP请求还是数据库。它必须总是相同的:数据的占位符,其他一切的白名单。如果您必须将一些数据输出到浏览器中,则无论数据来自$_POST、SOAP请求还是数据库,都必须进行适当的准备。如果必须从文件中读取数据,则必须确保文件名的安全,无论文件名称来自何处,等等。
票数 4
EN

Stack Overflow用户

发布于 2012-03-31 13:20:00

在第一种情况下,

  1. ()可能是最好的选择,允许用户使用<、>、&等所有字符,在第二种情况下,您需要使用一些数据库转义函数,比如mysql_real_escape_string,或者用PDO或mysqli编写的语句。在这里,准备好的语句是最好的选择,但是如果您只熟悉mysql,那么mysql_real_escape_string也能正常工作。如果您没有使用mysql,那么大多数SQL APIs中都有类似的函数。
  2. 在第三种情况下都这样做,但分别给出了两个不同的结果,一个用于输出,另一个用于数据库。

参考文献:

http://php.net/manual/en/function.htmlspecialchars.php

http://php.net/manual/en/function.mysql-real-escape-string.php

http://php.net/manual/en/book.pdo.php

http://php.net/manual/en/book.mysqli.php

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9956176

复制
相关文章

相似问题

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