ANY 输入的首要规则,不仅是 $_GET,即使是 $_POST、$_FILES 以及您从磁盘或流中读取的任何内容,您都应该始终 VALIDATE。
现在要更详细地回答您的问题,您在这个世界上有几个 HACK。让我给你看一些:
XSS 注入
如果您接受来自 URL 的数据(例如来自 $_GET 的数据)并输出此数据而不去除可能的标签,您可能会使您的网站容易受到 XSS 注入或代码注入的影响。例如:
http://myhoturl.com/?search=<script>window.location.href="http://thisisahack.com/"</script>
这会向您的网站输出一个 hack,并且人们会被重定向到另一个页面。此页面可能是网络钓鱼企图窃取凭据
SQL 注入
可以将 SQL 注入您的应用程序。例如:
http://myhoturl.com/?search=%'; UPDATE users SET password=MD5('hello'); SELECT * FROM users WHERE username LIKE '%
会让你的 SQL 看起来像这样:
SELECT * FROM articles WHERE title LIKE '%%'; UPDATE users SET password=MD5('hello'); SELECT * FROM users WHERE username LIKE '%%';
因此,您会将所有用户的密码更新为 Hello,然后返回不匹配的内容。
这只是对您可以使用 SQL 注入执行的操作的简要概述。为了保护自己,请使用 mysql_real_escape_string 或 PDO 或任何好的 DB 抽象层。
代码注入
很多人喜欢在磁盘上的某个位置包含数据并允许上传文件。例如:
//File igotuploaded.txt
<?php echo 'helloworld'; ?>
并且 url 允许您按名称包含文件。 ?show=myhotfile.txt
//In this file we include myhotfile.txt
include($_GET['show']);
此人将其更改为 ?show=../uploads/igotuploaded.txt,您将运行 echo 'Hello world';
那很危险。
经验法则...永远不要相信用户输入,始终验证、防止、验证、修复、验证并再次纠正...
祝你好运