小编use*_*150的帖子

捍卫'WAITFOR DELAY'sql注入攻击?

问题

我们需要在我们的java应用程序中防御'WAITFOR DELAY'sql注入攻击.

背景

[这很长.跳到'解决方案?' 以下部分,如果你匆忙]

我们的应用程序主要使用预准备语句和可调用语句(存储过程)来访问数据库.

在一些地方,我们动态构建并执行查询以供选择.在此范例中,我们使用条件对象根据用户输入条件构建查询.例如,如果用户为first_name和last_name指定了值,则查询结果总是如下所示:

SELECT first_name,last_name FROM MEMBER WHERE first_name ='joe' AND last_name='frazier'
Run Code Online (Sandbox Code Playgroud)

(在这个例子中,用户会指定"joe"和"frazier"作为他/她的输入值.如果用户有更多或更少的批评,我们会有更长或更短的查询.我们发现这种方法比使用准备更容易声明,比存储过程更快/更高效.

攻击

漏洞审计报告了sql注入失败.攻击者为'last_name'参数注入'frazier WAITFOR DELAY '00:00:20'值,导致这个sql:

   SELECT first_name,last_name FROM MEMBER WHERE first_name ='joe' AND last_name='frazier' WAITFOR DELAY '00:00:20'
Run Code Online (Sandbox Code Playgroud)

结果:查询成功执行,但执行时间为20秒.攻击者可以占用数据库池中的所有数据库连接,并有效地关闭您的站点.

关于这种'WAITFOR DELAY'攻击的一些观察

  • 我曾经想过,因为我们使用了Statement executeQuery(String),所以我们可以安全地从sql注入.executeQuery(String)不会执行DML或DDL(删除或删除).并且在分号上执行Query(String)choke,因此'Bobby Tables'范例将失败(即用户输入'frazier; DROP TABLE成员'作为参数.参见http://xkcd.com/327/)

  • "WAITFOR"攻击在一个重要方面有所不同:WAITFOR修改现有的"SELECT"命令,而不是单独的命令.

  • 攻击仅适用于生成的查询中的"最后一个参数".即'WAITFOR'必须出现在sql语句的最后

解决方案,廉价黑客还是两者

最明显的解决方案是简单地将"AND 1 = 1"添加到where子句中.

生成的sql立即失败并阻止攻击者:

   SELECT first_name,last_name FROM MEMBER WHERE first_name ='joe' AND last_name='frazier' WAITFOR DELAY '00:00:20' AND 1=1
Run Code Online (Sandbox Code Playgroud)

问题

  • 这是WAITFOR攻击的可行解决方案吗?
  • 它是否可以抵御其他类似的漏洞?
  • 我认为最好的选择是使用准备好的陈述.更多的工作,但不那么脆弱.

sql-server sql-injection jdbc

7
推荐指数
2
解决办法
1万
查看次数

为什么不用手机香草Jquery?即与特定于移动设备的基于jquery的库(jqtouch/sencha)形成鲜明对比?

这可能看起来像一个基本/愚蠢/明显回答的问题,但我想检查: 为什么使用面向移动的javascript库(例如jqtouch)而不是直接的jquery?

上下文:

我们正在考虑丰富我们的网络应用程序的移动视图.我在我的android 2.1(摩托罗拉droid)上尝试了各种jqtouch演示.尽管演示应用程序(todo和世界时钟)运行良好,但许多UI"功能"演示都失败了(例如动画).

同样,我使用同一部手机测试了我们的网络应用程序的"完整"版本.这个'完整版'下载了javascript的船载,包括完整的jquery 1.3.2.该网站运作良好(包括ajax获取和帖子),并没有感觉太慢.(警告:我必须下载完整的网站,然后捏缩放以便我可以阅读文本.这增加了很多开销.)

问题

所以,我问这些"明显"的问题:

  • 包含基本jquery库的缺点是什么?即使用标准的html/css来渲染ui(即而不是jqueryui或jqtouch).假设:用户可以使用"标准html"网络应用程序,并且不需要/希望外观像"本机"应用程序.

  • 如果我理解正确,jqtouch的主要好处包括:-smaller .js文件大小-nicer UI小部件.请让我直截了当.

  • 从"理论共产主义工作"部门,我认为"大.js大小"不会引起问题,因为移动浏览器会缓存它.(即下载一次大120Kb文件,然后永远使用它).然而有传言称,在i-phone上,一个大文件会推出其他缓存条目.因此浏览器可能每次都必须重新下载big.js文件.什么是.js文件的移动浏览器缓存的下降?

  • 任何人都可以评论当前(2010年8月)移动图书馆的跨浏览器(android/blackberry)缺点吗?从我看来,专门为webkit设计的jqtouch与现代黑莓浏览器不兼容.

谢谢

法案

javascript mobile jquery

7
推荐指数
1
解决办法
546
查看次数

JDBC连接挂起

我们的一位客户有一个新问题:应用程序停止运行.线程转储显示JDBC调用中所有线程都挂在网络IO上.

我们/我从未见过这些"网络IO".通常,具有DB问题的慢速机器具有a)一个或两个长时间运行的查询或b)某种类型的锁定/死锁.在任何一种情况下,线程都会"挂起"在不同的方法上.我从未见过所有30多个线程挂在网络IO上.

下面我已经包含了一个来自线程转储的摘录.所有HTTP线程都挂在同一个java.net.SocketInputStream.read调用上.

我和他们的dba和系统管理员交谈过.据他们说,最近在环境中"没有任何改变"会导致这个问题.

数据库环境

MSSQL 2005 64位Service Pack 2驱动程序:sqljdbc.jar:1.0 809 102

注意:它们正在运行较旧的jdbc驱动程序.AFAIK他们尝试从1.0升级到1.2驱动程序,但还有其他一些问题.

其他环境问题

他们在VMWare VM中同时运行应用服务器和数据库服务器.我不知道这种设置如何影响网络性能.

显然这是唯一具有此问题的应用程序.我对他们的网络架构一无所知.

问题 *有关此问题的任何见解?*如果是网络,任何后续分析步骤?

附录A:摘自线程转储

所有HTTP连接都挂在同一个方法上:

"TP-Processor31" daemon prio=5 tid=0x04085b78 nid=0x970 runnable [0x0764d000..0x0764fd6c]
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at com.microsoft.sqlserver.jdbc.DBComms.receive(Unknown Source)
    at com.microsoft.sqlserver.jdbc.IOBuffer.sendCommand(Unknown Source)
    - locked  (a com.microsoft.sqlserver.jdbc.DBComms)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.sendExecute(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteQuery(Unknown Source)

sql-server database-connection jdbc

5
推荐指数
1
解决办法
2407
查看次数

备份cvs存储库的最佳实践?

我们的一些项目仍然在cvs上.我们目前使用tar来每晚备份一次存储库.

这是一个问题:备份cvs存储库的最佳实践?

背景:我们正在将全国的几台服务器组合到一台中央服务器上.合并的代表大小为14gb.(是的,这很高,很可能是由于许多二进制文件,许多分支和存储库的年龄).

cvs存储库的"直接tar"产生~5gb .tar.gz文件.从5gb tar文件恢复文件将是笨重的.另外,我们会快速填满磁带.

完全和增量备份方法(即每周完整备份,夜间增量备份)的效果如何?什么开源工具很好地解决了这个问题?(例如阿曼达,巴库拉).

谢谢,

法案

cvs version-control backup

4
推荐指数
1
解决办法
3999
查看次数

寻找"日视图"javascript库/插件/日历

我们的项目旨在呈现类似于Outlook的Web视图的日历(即,您可以在"日","周"或"月"视图中查看日历).为了澄清:我们不是需要"日期选取器"功能(即通过外的开箱jQuery UI的日历插件使用).

此时我发现jquery插件在"月视图"和"周视图"中呈现日历.

任何人都可以推荐'日视图'jquery插件或javascript库?我们可以编写自己的插件,但是想先查看一下hive-mind.

提前致谢,

法案

附录A.用于渲染日历的Jquery插件

周视图

Jquery周历:http: //www.redredred.com.au/projects/jquery-week-calendar/

月视图

Jmonth日历

完整日历

javascript jquery plugins calendar

3
推荐指数
1
解决办法
9109
查看次数