2010-11-05 88 views
1

我有1个主要网站,我想从iPhone应用程序的主要网站插入数据。在这种情况下,我想通过$ _GET插入数据,如果我这样做,我应该采取哪些预防措施?其他解决方案?这会被称为API吗?

回答

1

确保您采取预防措施,以防止SQL Injection Attacks, as described on the PHP documentation site

Wikipedia has good summary of Code Injection一般。

其他类型的注射,你应该特别关注作为一个PHP开发人员将包括(但不一定局限于):

  • “shell命令注入” - 见PHP's escapeshellarg()

  • “包含文件注入” - 避免包括文件的名字都直接从已提交的用户数据产生。如果您必须这样做,那么解析该值,并强制包含的文件位于应用程序中的“安全”目录中,其中不能找到其他敏感数据或非幂等脚本。

在互联网上有很多的阅读。花一些时间与谷歌追踪并阅读它。这些技术和关注点适用于所有语言和平台 - 不仅仅是PHP - 因此您将始终使用您学习的信息。

祝你好运。

0

作为一个快速的总结......想象一下,如果有人进入"1'; DROP TABLE users; --"。您的SQL查询可能如下所示:"...WHERE id='1'; DROP TABLE users; --';"。 (SQL中的--是注释 - 忽略它后的所有内容。)最终,他们会正确猜测您的某个表名,并且您已经失去了一切。或者他们可以做到这一点放“管理员”的用户名外地和"password' OR 1=1; --"在密码字段,导致一个查询,看起来像这样"SELECT * FROM users WHERE username='Administrator' AND password='pass' OR 1=1; --';"。当1 = 1总是评估为真时,他们将能够以他们想要的任何人登录。

为了避免这种情况,只为你所有$_GET瓦尔做$password=mysql_real_escape_string($_GET['password'],$query_reference);