PHP MySQL $

可能重复:
在PHP中停止SQL注入的最佳方法

如果我要使用$ _GET函数从URL中检索变量,我该如何使它成为黑客证明? 现在我只有addSlashes,我应该添加什么?

$variable1 = addslashes($_GET['variable1']);
//www.xxxxx.com/GetTest.php?variable1=xxxx

使用ANY输入的首要规则,不仅仅是$ _GET,即使使用$ _POST,$ _FILES和从磁盘读取的或从流中读取的任何内容都应该始终验证。

现在要更详细地回答你的问题,你有这个世界上存在的几个HACKS。 让我告诉你一些:

XSS注射

如果您接受来自URL的数据(例如$ _GET)并输出这些数据而不删除可能的标记,那么您可能会使您的站点倾向于进行XSS注入或代码注入。 例如:

http://myhoturl.com/?search=<script>window.location.href="http://thisisahack.com/"</script>

这会向您的网站输出黑客,并且人们将被重定向到另一个页面。 此页面可能是窃取凭据的网络钓鱼企图

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或任何良好的数据库抽象层。

代码注入

很多人喜欢在磁盘上的某处包含数据并允许上传文件。 例如:

//File igotuploaded.txt
<?php echo 'helloworld'; ?>

并且该URL允许您按名称包含文件。 ?秀= myhotfile.txt

//In this file we include myhotfile.txt
include($_GET['show']);

这个人改变了?show = .. / uploads / igotuploaded.txt,你将运行echo'Hello world';

这很危险。

经验法则...永远不要信任用户输入,始终验证,防止,验证,修复,验证并再次纠正...

祝你好运


这完全取决于你将如何处理它:

  • MySQL:mysql_real_escape_string / PDO / mysqli
  • html:htmlspecialchars
  • 等等
  • 在不知道你将如何处理你的数据的情况下,不可能说出什么才能保证它的安全。


    使用用户输入(任何HTTP请求算作用户输入)时,您面临的两大风险是:

  • SQL注入
  • 跨站脚本
  • 你应该熟悉风险和防御。 每种威胁的防御方式都不相同。 使用addslashes()不是完全的防御。

    OWASP Top Ten项目是学习更多关于安全Web编程的一个很好的资源。

    我已经做了关于SQL注入神话和谬误的演讲,希望对你有所帮助。

    链接地址: http://www.djcxy.com/p/16735.html

    上一篇: PHP MySQL $

    下一篇: Am I safe from a mysql injection?