为了保护我的项目不受攻击(例如: SQL注入) im使用下面的查询参数页(*.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 digitsstrip_tags()可以根据需要过滤数据。bcrypt()加密mcrypt_ecb()加密isset($_SESSION["id"]) ie登录时才能访问页面。error_reporting(0);来隐藏错误。$_POST而不是$_REQUESTmysql_real_escape_string();事实上,我的项目将被大学使用,并对安全问题感到紧张,因为回溯使它很容易渗透,所以我努力使它安全。(我知道这是个很大的问题,但任何帮助都会非常有用)但作为一个学生,我想知道我还缺少什么来确保安全?
发布于 2013-08-10 00:21:36
首先:
使用PHP的MySQLi函数,而不是在上使用非常非常小的或PDO代替。但是,在这两种方法中,MySQLi,特别是PDO功能,在安全性方面更好.是最好的选择,因为它们为您提供了准备语句的更高抽象,这大大增加了您的防范SQL注入攻击。
PHP应用程序中的大多数SQL语句使用变量输入来确定SQL语句的结果。为了安全地将用户提供的输入传递给SQL语句,使用参数标记(?)准备一个语句。或表示变量输入的命名变量。执行准备语句时,可以将输入值绑定到参数标记。数据库引擎确保将每个输入值作为单个参数处理,从而防止对应用程序的SQL注入攻击。与通过PDO::exec()发出的语句相比,准备好的语句提供了性能优势,因为数据库管理系统为每个准备好的语句创建一个访问计划,如果随后重新发布语句,它可以重用。
此外,避免使用一些旧的折旧PHP函数。
接下来,通常情况下,如果您使用PHP或任何创建动态请求的语言,这就意味着用户在某种程度上输入,而且大多数情况下是与数据库的后续交互。web编程的规则1:在任何情况下都不要信任用户的输入。输入的所有内容都必须进行清理和验证,以避免出现安全问题。您可以使用PHP进行本机操作,但老实说,它需要大量的工作和对细节的大量关注--当然,这会增加您的开发时间。
如果这不是一次学术练习,或者是一次关于自我训练( 如果可以的话,尝试使用框架。 )的练习,那么它可能会在以后的过程中给你带来很多头痛,就像处理逃避、验证等问题的良好框架一样。这意味着,如果你去突击队和写你自己的代码没有框架:大多数,如果不是所有的功能,您将实现将为您完成,机会是做得更好的一个框架。
此外,它们还使PHP开发更加容易,并使occasionally,更有趣。当然,并非所有框架都是平等创建的,所有框架也存在安全问题。但是,这是你必须记住的事情,在任何时候,虔诚地保持自己的信息。
如果这是一次学术练习,或者是自学练习,请阅读以下内容:
许多顶级的StackOverflow文章和Programmers.StackExchange帖子可以帮助您完成您的旅程。
首先,这里有几个:
(这篇文章更多地概述了大多数这些链接所讨论的内容)
阅读了您领域中的安全实践。它一直在进化。
如果您对框架感兴趣,这里有几个流行的框架可以激发您的兴趣:
但是,不管怎样-祝你好运!
发布于 2014-06-18 04:30:15
使PHP应用程序安全是一个相当复杂的过程。在编写应用程序时,有很多事情要考虑,而SQL注入并不是唯一的威胁。
我建议参考以下有用的条款:
25个用于Sys管理员的PHP安全最佳实践
如何保护您的php应用程序?
https://stackoverflow.com/questions/18157233
复制相似问题