我有一个主要网站,我想从iPhone应用程序在我的主网站中插入数据。在这种情况下,我想通过$ _GET插入数据,如果我这样做,我应该采取哪些预防措施?还有其他方法吗?这会被称为API吗?
答案 0 :(得分:1)
请确保采取预防措施以防止SQL Injection Attacks, as described on the PHP documentation site。
Wikipedia has good summary of Code Injection一般。
您应该特别关注的其他类型的注入,因为PHP开发人员会包括(但不一定限于):
“Shell命令注入” - 请参阅PHP's escapeshellarg()。
“包含文件注入” - 避免包含名称直接由用户提交的数据生成的文件。如果必须这样做,则解析该值,并强制包含的文件位于应用程序中的“安全”目录中,其中不能找到其他敏感数据或非幂等脚本。
互联网上有很多阅读材料。花一些时间与谷歌追踪并阅读它。这些技术和关注点适用于所有语言和平台 - 不仅仅是PHP - 因此您将始终使用您学到的信息。
祝你好运。答案 1 :(得分:0)
快速摘要...想象一下有人输入"1'; DROP TABLE users; --"
。您的SQL查询可能如下所示:"...WHERE id='1'; DROP TABLE users; --';"
。 (--
在SQL中是一个注释 - 忽略它之后的所有内容。)最终,他们会正确猜出你的一个表名,而你已经丢失了所有内容。或者他们可以这样做,在用户名字段中输入“Administrator”,在密码字段中输入"password' OR 1=1; --"
,从而产生类似于"SELECT * FROM users WHERE username='Administrator' AND password='pass' OR 1=1; --';"
的查询。当1 = 1总是评估为真时,他们将能够以他们想要的任何人身份登录。
要避免这种情况,只需对$password=mysql_real_escape_string($_GET['password'],$query_reference);
个所有版本$_GET
进行{{1}}。