使php web应用程序安全

时间:2013-08-09 23:44:43

标签: php security

保护我的项目免受攻击(例如:SQL注入)我使用下面的查询 参数页面(* .php?query = value):

$id=strip_tags($id);
$id=mysql_real_escape_string($id);    
if(is_numeric($id) && strlen($id)<=3) //id are numbers maximum of 3 digits
  • 除此之外我使用客户端(JavaScript)&amp;服务器端(php)验证,strip_tags()根据需要过滤数据。
  • 使用bcrypt()
  • 加密密码
  • 所有邮件均使用mcrypt_ecb()
  • 加密
  • 只有在isset($_SESSION["id"])即登录时才能访问页面。
  • error_reporting(0);隐藏错误。
  • $_POST代替$_REQUEST
  • 每个输入
  • mysql_real_escape_string();

实际上我的项目将被大学使用,并且我会对安全性感到紧张,因为回溯使其易于渗透,因此我努力使其安全。 (我知道这是一个很大的问题,但任何一种帮助都会非常有用)但作为一名学生,我想知道我还缺少什么才能使它安全?

3 个答案:

答案 0 :(得分:10)

首先:

<强> Avoid PHP's MySQL functions like a plague

使用PHP的MySQLi函数代替非常,非常小 PDO instead MySQLi and especially PDO functions, are better security-wise.但是,在这两者中,PDO是最好的交易,因为它们通过预备语句为您提供更高的抽象,这大大增加了defense against SQL injection attacks

  

PHP应用程序中的大多数SQL语句都使用变量输入   确定SQL语句的结果。传递用户提供的   安全地输入SQL语句,使用参数准备语句   标记(?)或表示变量输入的命名变量。什么时候   你执行准备好的语句,你将输入值绑定到   参数标记。数据库引擎确保每个输入值   被视为单个参数,防止SQL注入攻击   反对你的申请。与通过发布的声明相比   PDO :: exec(),预处理语句提供了性能优势,因为   数据库管理系统为每个人创建一个访问计划   准备好的声明,如果重新发布声明,它可以重复使用   随后

另外,请避免使用一些较旧的折旧PHP函数。

接下来,通常,如果您使用的是PHP或任何创建动态请求的语言,那么这意味着用户在某个级别上输入,并且通常是与数据库的后续交互。 网络编程的规则1:永远不会在任何情况下信任用户输入。完全。输入的所有内容都必须经过清理和验证,以避免出现安全问题。您可以使用PHP本机执行此操作,但老实说,它需要大量工作并且需要对细节进行大量关注 - 这当然会扩展您的开发时间。

如果这不是一个学术练习或者是一个处理自我训练的练习 - try to use a framework if you can - 它可能会为你节省很多麻烦,因为好的框架可以take care of some of the overhead处理逃避,验证等等。这意味着如果你去突击队并编写你自己的代码而没有框架:大多数,如果不是你将要实现的所有功能都将为你完成,并且很有可能 - 在框架中做得更好。

另外,它们使PHP开发更容易,偶尔有趣。当然,并非所有框架都是平等的,所有框架也都存在安全问题。但是,这是你必须记住的事情,并且在任何时候都要保持自己的信息。

如果这是学术练习或自学习练习,请阅读:

Reasons to NOT use a PHP Framework?

许多顶级StackOverflow PHP帖子和Programmers.StackExchange帖子可以帮助您完成旅程。

以下是一些开头的内容:

(这是对大多数链接讨论内容的概述)

阅读您所在领域的安全措施。它一直在发展。

如果您对框架感兴趣,可以参考以下几个受欢迎的框架:

但是,无论哪种方式 - 祝你好运!

答案 1 :(得分:3)

我建议审核OWASP's网站以获取与网络安全相关的信息(甚至加入OWASP)。

OWASP section提供PHP-related information

答案 2 :(得分:2)

使PHP应用程序安全是一个非常复杂的过程。在编写应用程序时,需要考虑很多事情,而SQL注入并不是唯一的威胁。

我建议参考以下有用的文章:

25 PHP Security Best Practices For Sys Admins

How to secure your php application?

PHP Security Cheat Sheet