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
堆栈溢出
- 我怎样才能防止在PHP中的SQL注入?
- 如何从“Bobby Tables”XKCD漫画工作SQL注入?
- https://stackoverflow.com/questions/1973/what-is-the-best-way-to-avoid-sql-injection-attacks
- 什么是SQL注入?
- INSERT上的SQL注入
- 如何从SQL注入保护此function?
- 参数是否足以防止Sql注入?
- SQL注入今天有风险吗?
- https://stackoverflow.com/questions/936254/sql-injection
- SQL注入道德黑客
- 这段代码是否阻止SQL注入?
SQL注入扫描器
- 前15名SQL注入扫描器
- Netsparker社区版,免费SQL注入扫描仪和XSS扫描仪