保护我的php应用程序的基本技术是什么?

时间:2013-02-09 22:53:33

标签: php security web-applications

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

我很感激任何有关php安全性的基本提示,并希望这个问题可以作为任何寻找开发互联网应用程序所需的标准安全措施的人的一站式场所。

2 个答案:

答案 0 :(得分:1)

如果脚本与数据库服务器交互,则必须转发发送到此服务器的所有查询以避免sql injections。如果不采取这种安全措施,可以进行很多破坏,但幸运的是,由于PHP中已经存在函数,所以很容易逃脱字符串。 对于MySQL数据库,它是mysql_real_escape_string(string $unescaped_string [, resource $link_identifier ])

以下是一个如何运作的示例:

脚本:index.php?user = '; TRUNCATE TABLE用户; 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

答案 1 :(得分: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%的网络。