Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使php web应用程序安全_Php_Security - Fatal编程技术网

使php web应用程序安全

使php web应用程序安全,php,security,Php,Security,为了保护我的项目免受攻击(例如:SQL注入),我使用下面的 参数页(*.php?query=value): $id=strip\u标签($id); $id=mysql\u real\u escape\u字符串($id); 如果(是数字($id)&&strlen($id)首先: 使用PHP的MySQLi函数来代替非常、非常小的或。但是,在这两种函数中,PDO是最好的选择,因为它们为您提供了更高的抽象性准备语句,从而大大提高了您的: PHP应用程序中的大多数SQL语句都使用变量输入来 确定SQL语

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

$id=strip\u标签($id);
$id=mysql\u real\u escape\u字符串($id);
如果(是数字($id)&&strlen($id)首先:

使用PHP的MySQLi函数来代替非常、非常小的。但是,在这两种函数中,PDO是最好的选择,因为它们为您提供了更高的抽象性准备语句,从而大大提高了您的:

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

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

接下来,一般来说,如果您使用的是PHP或任何创建动态请求的语言,这意味着用户在某种程度上的输入,并且通常是与数据库的后续交互。web编程规则1:在任何情况下,决不信任用户输入。总之。输入的所有内容都必须经过清理、验证为了避免安全问题,你可以用PHP本机实现这一点,但老实说,这需要大量的工作和对细节的关注——当然,这会延长你的开发时间

如果这不是一个学术练习或是一个自我训练的练习——它可能会让你以后省去很多麻烦,就像好的框架可以处理越狱、验证之类的事情一样。这意味着,如果你去突击队,在没有框架的情况下编写自己的代码:即使不是所有的功能,也是大部分的功能实现将为您完成,并且有机会在一个框架中做得更好

另外,它们使PHP开发变得更容易,偶尔有趣。当然,并非所有框架都是平等创建的,而且所有框架也都有安全问题。但是,这是您必须牢记的一点,并始终以宗教的方式告知自己

如果这是一项学术练习或自学练习,请阅读以下内容:

许多顶尖的PHP帖子和程序员。StackExchange帖子可以帮助您完成旅程

以下是一些开始:

(这篇文章更多的是概述了这些链接讨论的内容)

阅读您所在领域的安全实践。它不断发展。

如果您对框架感兴趣,这里有一些流行的框架可以激发您的兴趣:

  • (强烈推荐)
但是,不管怎样,祝你好运!

首先:

使用PHP的MySQLi函数来代替非常、非常小的。但是,在这两种函数中,PDO是最好的选择,因为它们为您提供了更高的抽象性准备语句,从而大大提高了您的:

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

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

接下来,一般来说,如果您使用的是PHP或任何创建动态请求的语言,这意味着用户在某种程度上的输入,并且通常是与数据库的后续交互。web编程规则1:在任何情况下,决不信任用户输入。总之。输入的所有内容都必须经过清理、验证为了避免安全问题,你可以用PHP本机实现这一点,但老实说,这需要大量的工作和对细节的关注——当然,这会延长你的开发时间

如果这不是一个学术练习或是一个处理自我训练的练习,它可能会在以后的道路上为您节省许多麻烦,因为好的框架可以处理逃逸、验证等问题。这意味着如果您去commando并编写自己的代码而不使用框架:大多数,如果不是所有的功能,您将成为实现将为您完成,并且有机会在一个框架中做得更好

另外,它们使PHP开发变得更容易,偶尔有趣。当然,并非所有框架都是平等创建的,而且所有框架也都有安全问题。但是,这是您必须牢记的一点,并始终以宗教的方式告知自己

如果这是一项学术练习或自学练习,请阅读以下内容:

许多顶尖的PHP帖子和程序员。StackExchange帖子可以帮助您完成旅程

$id=strip_tags($id); $id=mysql_real_escape_string($id); if(is_numeric($id) && strlen($id)<=3) //id are numbers maximum of 3 digits