ADOdb中的SQL注入和一般的网站安全性

我已经做了很多的阅读,仍然不明白100%SQL注入是如何发生的!

我想从那些知道的人那里看到基于我的例子的SQL注入的具体例子,所以它可以被复制,testing和修复。 我试图SQL注入我的代码,不能,所以我想有人来certificate我,否则!

1.我正确的说SQL注入只能通过POST或者GET方法来实现,也就是说在网站上它应该是post的forms,比如“注册或者search”或者像“search.php?tags = love”这样的查询。

说这是可能的注入下面的代码,有POST方法?

$name = trim($_POST['username']); $mail = trim($_POST['email']); $password = trim($_POST['password ']); if ($errors == "false") { $sql = "INSERT INTO clients SET name='" . mysql_real_escape_string($name) . "', mail='" . mysql_real_escape_string($mail) . "', password='" . mysql_real_escape_string(sha1($password)) . "'"; $connection->execute($sql); } 

2.另一个有GET方法: rate.php?like&videoID=250&userID=30

 $sql = "SELECT videoID FROM likes WHERE videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1"; $connection->execute($sql); 

请帮助那些感觉自由与主题,但使用具体的例子。

提前致谢,
伊利亚

用户input不正确的编码时,SQL注入攻击就会发生。 通常,用户input是用户用查询发送的一些数据,即$_GET$_POST$_COOKIE$_REQUEST$_SERVER数组中的值。 然而,用户input也可以来自其他各种来源,如套接字,远程网站,文件等。因此,你应该真的把所有东西,而不是常量 (如'foobar'作为用户input

在你发布的代码中, mysql_real_escape_string被用来编码(=转义)用户input。 代码因此是正确的,即不允许任何SQL注入攻击。

请注意,忘记对mysql_real_escape_string的调用是很容易的 – 对于熟练的攻击者来说,一次就足够了! 因此,您可能希望将现代PDO与准备好的语句(而不是adodb)一起使用。

最近我对这个问题进行了彻底的调查,希望和大家分享一些非常有趣的材料,从而使我的问题更加完整和有益。

  • 使用PHP防止SQL注入John Nebel
  • Security Corner – SQL注入Chris Shiflett
  • 亚历山大·安东诺夫意外的SQL注入
  • Mysql_real_escape_string()与Ilia Alshanetsky编写的语句
  • SQL注入攻击和防御萨加尔Joshi
  • Jim Whitehead教授的SQL注入攻击
  • 通过Chris Shiflett的addslashes()与mysql_real_escape_string()
  • 什么是Joel Spolsky的SQL注入漏洞
  • MySQL – SQL注入预防
  • SQL注入演练
  • SQL注入备忘单
  • 在PHP和MySQLi中编写语句


从YouTube上

  • SQL注入神话和谬论:Bill Karwin的防御最佳实践
  • PHP教程:安全 – SQL注入
  • 如何SQL注入与SQLMAP在Backtrack5 RC1

从维基百科

  • 维基百科 – SQL注入
  • 维基百科 – SQL

从OWASP

  • SQL注入
  • SQL注入指南
  • OWASP – 避免SQL注入
  • SQL注入预防备忘录
  • testingSQL注入

从PHP手册

  • SQL注入
  • PDO类 – 准备好的语句和存储过程
  • MySQL改进的扩展
  • mysql_real_escape_string()

来自微软和甲骨文

  • 什么是正确的方法来防止Microsoft脚本中的SQL注入
  • 在Microsoft停止您之前停止SQL注入攻击
  • 防御SQL注入攻击的Oracle

堆栈溢出


SQL注入扫描器

  • 前15名SQL注入扫描器
  • Netsparker社区版,免费SQL注入扫描仪和XSS扫描仪