【问题标题】:What are the basic techniques for securing my php application? [closed]保护我的 php 应用程序的基本技术是什么? [关闭]
【发布时间】:2013-01-25 09:33:53
【问题描述】:

到目前为止,我练习清理所有 $_GET/$_POST 输入,并始终在操作请求中调用 php 文件名,而不是 PHP_SELF。但我知道还有更多,而且它有点分散在网络上。

我会感谢任何有关 php 安全的基本提示,并希望这个问题可以为任何寻求开发 Internet 应用程序所需的标准安全措施的人提供一站式场所。

【问题讨论】:

  • 您应该了解您的 Web 应用程序容易受到哪些类型的攻击。然后了解如何阻止您的应用易受攻击(针对特定攻击)。
  • 是的,你总是保护你的城市免受威胁,你必须知道威胁
  • navnav,请随时详细说明答案。你似乎知道我在寻找什么。
  • OWASP 列举了许多类型的常见漏洞。查看top ten listPHP top 5 供初学者使用。
  • 阅读这篇文章的“安全”部分:programmers.stackexchange.com/questions/46716/…

标签: php security web-applications


【解决方案1】:

比使用 mysql_real_escape_string 转义每个用户输入更好的方法是使用准备好的语句。

你可以在这里阅读:http://php.net/manual/en/pdo.prepared-statements.php

使用准备好的语句,您既快速又安全。快,因为它们准备一次并执行多次。安全,因为它们对 SQL 注入攻击免疫。

另一种类型的攻击是跨站点请求伪造攻击。许多 PHP 框架已经为此类问题做好了准备,并以一种或另一种方式解决它。如果你使用框架,你应该检查它是否提供 csrf 防御。如果你在没有框架的情况下工作,你应该开始阅读这种攻击。

最后但同样重要的是,还有 XSS 类型的攻击(跨站点脚本)。它与 javasript 中用户输入的不当转义有关。攻击者可能会从您的用户那里窃取一些重要数据。所以你也应该防范这种攻击。看这里:http://phpmaster.com/php-security-cross-site-scripting-attacks-xss/

这些是基本类型的攻击。如果您可以阻止它们,那么您可以更安全地保护 80% 的网络。

【讨论】:

  • 谢谢你谦虚的回答,塞巴斯特。
【解决方案2】:

如果脚本正在与数据库服务器交互,则发送到该服务器的所有查询都必须转义以避免sql injections。如果不采取这种安全措施,可能会造成很多破坏,但幸运的是,转义字符串非常简单,因为 php.ini 中已经存在这些函数。 对于 MySQL 数据库,它是 mysql_real_escape_string(string $unescaped_string [, resource $link_identifier ])

这是一个如何工作的示例:

脚本:index.php?user=';截断表用户; SELECT * FROM users WHERE user = '

$user = mysql_real_escape_string($_GET['user']);
mysql_query("SELECT * FROM users WHERE user = '$user'"); //The table users won't be truncated

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    相关资源
    最近更新 更多