小编rou*_*tic的帖子

Postgresql:检查架构是否存在?

我需要动态创建,管理和删除模式.如果我去创建一个已经存在的模式,我想(有条件地,通过外部手段)删除并按指定重新创建它.如何检查Postgres 9服务器上是否存在所述模式?

目前,我这样做:

select exists (select * from pg_catalog.pg_namespace where nspname = 'schemaname');
Run Code Online (Sandbox Code Playgroud)

但我觉得可能有另一种方式......这是查询Postgres特定模式存在的"正确"方法吗?

sql postgresql

57
推荐指数
5
解决办法
5万
查看次数

从Maven启动H2数据库服务器?

假设我想为我的集成测试创建和使用H2数据库.

Maven有一个运行测试的命令:mvn test.

有没有办法告诉maven为测试启动H2数据库服务器并在完成后停止它?

我想这个工作类似于我如何通过Maven命令运行tomcat(mvn tomcat:run).

对不起,如果这个问题没有意义,我仍然围绕着新的概念.

testing h2 maven

37
推荐指数
6
解决办法
4万
查看次数

使用WCF ServiceRoute的MVC2路由:Html.ActionLink呈现错误的链接!

我有一个与MVC2网站并排的WCF服务.我希望我的服务URL看起来像这样:

http://localhost/projdir/Service

MVC网站还处于起步阶段,因此它仍然拥有所有的样板控制器等.

以下代码在global.asax中乍一看:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.Add(new ServiceRoute("Service", new ServiceHostFactory(), 
               typeof(MyService)));

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", 
              id = UrlParameter.Optional } // Parameter defaults
    );
}
Run Code Online (Sandbox Code Playgroud)

该服务出现在我描述的地方,并按宣传的方式工作.大.

但是,我只是注意到以这种方式命令我的代码会改变我ActionLink的所有代码.例如,MVC站点上的"关于"选项卡现在显示如下:

http://localhost/projdir/Service?action=About&controller=Home

这显然是不正确的(它应该是http://localhost/projdir/Home/About/).

如果我将ServiceRoute添加移动到默认MapRoute()调用之下,那么我将丢失控制器错误.(实际上我得到一个"StructureMapControllerFactory没有返回控制器的实例"错误,因为我已经连接了StructureMap,呃,它不是一个控制器开始.)

有趣的是,它似乎只影响了产量Html.ActionLink().我可以手动输入http://localhost/projdir/Home/About/并进入正确的页面.

我制作了一个非常明显的新手错误?

wcf routing asp.net-mvc-3 asp.net-mvc-2

25
推荐指数
2
解决办法
5095
查看次数

HTTP:结合过期和验证缓存

我在为以下情况制定HTTP缓存标头时遇到问题.

我们的服务器有大量数据,每周可能会改变几次.我希望浏览器缓存这些数据.此外,我希望尽可能减少条件获取的延迟,因为网络不可靠.

我追求的最终行为是这样的:

  1. 客户端请求之前从未见过的资源.
  2. 服务器响应资源以及ETag和max-age(24小时).
  3. 直到24小时过去,客户端才会使用缓存资源.
  4. 在到期日期之后,客户端将执行验证请求(If-None-Match: [etag])
  5. 如果资源没有改变:
    • 服务器响应 304 Not Modified
    • 客户端以某种方式告知现有资源从现在起24小时内有新的到期日期
    • 回到第3步

归结为它的本能... 304响应可以包含一个新的max-age?或者原来是否max-age受到后续要求的尊重?

conditional caching http http-caching

19
推荐指数
1
解决办法
6720
查看次数

超时使用TaskCompletionSource实现的异步方法

我有一个blackbox对象,它暴露了一个异步操作的方法,并在操作完成时触发一个事件.我已经将它包装到一个Task<OpResult> BlackBoxOperationAysnc()使用TaskCompletionSource 的方法中 - 效果很好.

但是,在那个异步包装器中,如果在给定的超时后没有收到事件,我想管理用超时错误完成异步调用.目前我使用计时器管理它:

public Task<OpResult> BlackBoxOperationAysnc() {
    var tcs = new TaskCompletionSource<TestResult>();   
    const int timeoutMs = 20000;
    Timer timer = new Timer(_ => tcs.TrySetResult(OpResult.Timeout),
                            null, timeoutMs, Timeout.Infinite);

    EventHandler<EndOpEventArgs> eventHandler = (sender, args) => {
        ...
        tcs.TrySetResult(OpResult.BlarBlar);
    }
    blackBox.EndAsyncOpEvent += eventHandler;
    blackBox.StartAsyncOp();
    return tcs.Task;
}
Run Code Online (Sandbox Code Playgroud)

这是管理超时的唯一方法吗?有没有设置我自己的计时器 - 我在TaskCompletionSource中看不到任何超时?

c# asynchronous timeout async-await taskcompletionsource

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

AMF和Cross Site脚本漏洞混淆

我刚刚代表SFDC对Deloitte的安全审计工作进行了抨击.基本上我们使用flex并通过AMF进行​​通信.我们使用FluorineFX(而不是LCDS和Blaze).我们被告知,因为AMF响应没有编码,有人可以操纵AMF参数并插入Javascript,这是一个XSS漏洞.我正在努力理解AMF响应如何回复,这可以回应在错误消息中传递的JS,可以由浏览器或其他任何事情执行.我对使用HTML和JS的XSS非常有经验,但看到它被AMF标记有点意外.我与FluorineFx团队保持联系,他们也很困惑.

我很惊讶地看到AMF库对响应数据进行编码,Fluorine肯定没有.看起来像PortSwigger和IBM AppScan这样的安全应用程序在他们的工具箱中包含了这种类型的测试.您是否使用AMF遇到此漏洞并且能解释XSS问题如何表现出来?只是好奇.如果存在争论或者修补漏洞,我需要争论我的方法.考虑到使用Flex的AMF,我认为您可能有一些见解.

附加信息 ...

所以来自实际供应商PortSwigger的更多信息.我向他们提出了问题,网,网,他们承认这种类型的攻击非常复杂.最初他们将此归类为高严重性安全问题,但我认为他们的调整现在正在发生变化.我以为我会发布他们回复的内容,因为我觉得这个观点很有意思.

---来自PortSwigger的问题---

谢谢你的留言.我认为答案是这可能是一个漏洞,但开发并非易事.

你是对的,当AMF客户端使用响应时(除非它做了一些愚蠢的事情),问题不会出现,而是攻击者可以设计出浏览器使用响应的情况.大多数浏览器都会忽略HTTP Content-Type标头,并会查看实际的响应内容,如果它看起来像HTML一样会很乐意处理它.从历史上看,人们已经存在大量攻击,其中人们将HTML/JS内容嵌入到其他响应格式(XML,图像,其他应用程序内容)中,这是由浏览器执行的.

所以问题不在于响应的格式,而在于生成它所需的请求格式.攻击者设计包含有效AMF消息的跨域请求并非易事.XML请求/响应也会出现类似的问题,其中包含类似XSS的行为.当然可以创建一个有效的XML响应,它被浏览器视为HTML,但挑战在于如何在HTTP体内跨域发送原始XML.这不能使用标准HTML表单来完成,因此攻击者需要找到另一种客户端技术或浏览器怪癖来执行此操作.从历史上看,这样的事情在不同的时间都是可能的,直到它们被浏览器/插件供应商修复.我现在还没有意识到任何允许它的东西.

简而言之,这是一种理论上的攻击,它取决于您可以完全忽略的风险配置文件或阻止使用服务器端输入验证,或者通过在服务器上编码输出并在客户端上再次解码.

我认为Burp应该将AMF请求格式标记为缓解此问题,并将影响降级为低 - 我将解决这个问题.

希望有所帮助.

干杯PortSwigger

---更多关于审计的信息---

portSwigger所做的并不一定是二进制有效负载的混乱,他们所做的是混淆了发布到处理程序以指导请求的实际AMF参数.例如,这里是审计的一个片段,它显示了AMF对请求的部分响应......

HTTP/1.1 200 OK
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
P3P: CP="CAO PSA OUR"
Content-Type: application/x-amf
Vary: Accept-Encoding
Expires: Tue, 06 Apr 2010 18:02:10 GMT
Date: Tue, 06 Apr 2010 18:02:10 GMT
Connection: keep-alive
Content-Length: 2595

......../7/onStatus.......
.SIflex.messaging.messages.ErrorMessage.faultCode.faultString
.faultDetail.rootCause.extendedData.correlationId.clientId.destination
.messageId.timestamp.timeToLive    body.headers.#Server.Processing..kFailed 
to locate the requested type 
com.Analytics.ca.Services.XXX5c2ce<script>alert(1)</script>9ccff0bda62..
....I506E8A27-8CD0-598D-FF6E-D4490E3DA69F.Id95ab281-d83b-4beb-abff-c668b9fd42d5
..fluorine.I04165c8e-f878-447f-a19a-a08cbb7def2a.A.q..@............
.        DSId.Aeb5eeabcbc1d4d3284cbcc7924451711.../8/onRes
...[SNIP]...
Run Code Online (Sandbox Code Playgroud)

注意那里的"alert"脚本......他们所做的是将一些脚本附加JS附加到传递的参数之一,其中包含要调用的方法即'com.Analytics.ca.Services.XXX'.通过这样做,JS返回了一条错误消息,但是有很多事情要发生在JS上以便接近执行.似乎是间接威胁.

- 安全审计员的最新观点 -

我和更大的团队讨论过,我们都认为这是一次有效的攻击.正如PortSwigger在他的第一段中提到的那样,理论上,因为你将内容类型设置为x-amf,并希望它不会在浏览器中呈现,大多数浏览器都会忽略此请求并无论如何呈现它.我认为供应商在很大程度上依赖于内容类型设置的事实; 然而,像IE和某些版本的Safari这样的流行浏览器会忽略这一点.

通过利用CSRF或任何其他形式的发起XSS攻击可以轻松触发攻击.

apache-flex security xss amf fluorinefx

13
推荐指数
2
解决办法
4888
查看次数

Nhibernate HQL在哪里IN查询

我试图返回一个查询单个表并使用IN的SimpleQuery列表.我可以使用它来工作

return new List<Jobs>(
    ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids))
);
Run Code Online (Sandbox Code Playgroud)

然而,这真的非常慢.所以我喜欢做这样的事情

SimpleQuery<Job> query = 
    new SimpleQuery<Job>(@"from Job as j where ? in (j.ServiceId)", ids);

return new List<Job>(query.Execute());
Run Code Online (Sandbox Code Playgroud)

但是我无法使SimpleQuery工作.我找不到任何涉及此文件的文件,并希望有人能够提供帮助.

谢谢

nhibernate castle-activerecord hql

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

NHibernate.LINQ支持的运算符

我正在尝试评估NHibernate.LINQ 1.0而不实际编写任何代码.Ayende承认,与EF相比,这个版本的LINQ支持是次要的,但对于我的生活,我似乎无法找到一个页面来解释这个实现中支持和不支持的内容.例如,我可以使用Skip&Take?我不能用什么?

linq nhibernate

12
推荐指数
1
解决办法
5315
查看次数

"未声明'http://www.w3.org/XML/1998/namespace:lang'属性."

有时,在使用XmlValidatingReader验证某些XML文档时,我收到以下错误:

System.Xml.Schema.XmlSchemaValidationException: 
"The 'http://www.w3.org/XML/1998/namespace:lang' attribute is not declared."
Run Code Online (Sandbox Code Playgroud)

同一文件有时会成功.我无法弄清楚为什么.

我的XSD像这样导入架构:

<xs:schema id="myschemaId"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       targetNamespace="http://mytargetnamespace.com"
       xmlns="http://mytargetnamespace.com"
       xmlns:mm="http://mytargetnamespace.com"
       elementFormDefault="qualified">
 <xs:import namespace="http://www.w3.org/XML/1998/namespace" 
            schemaLocation="http://www.w3.org/2001/xml.xsd" />
 ...
Run Code Online (Sandbox Code Playgroud)

在XML文档中,我有以下属性:

<root xmlns="http://mytargetnamespace.com"        
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://mytargetnamespace.com myschema.xsd">
Run Code Online (Sandbox Code Playgroud)

最后,XmlReaderSettings:

const XmlSchemaValidationFlags validationFlags =
          XmlSchemaValidationFlags.ProcessInlineSchema |
          XmlSchemaValidationFlags.ProcessSchemaLocation |  
          XmlSchemaValidationFlags.ReportValidationWarnings |
          XmlSchemaValidationFlags.AllowXmlAttributes;

// Set the validation settings.
var settings = new XmlReaderSettings
                   {
                       ValidationType = ValidationType.Schema,
                       ValidationFlags = validationFlags,
                       DtdProcessing = DtdProcessing.Parse
                   };
settings.ValidationEventHandler += OnValidationEventHandler;

// Create the XmlReader object.
var reader = XmlReader.Create(_xmlFilePath, settings);

// Parse the file. 
while …
Run Code Online (Sandbox Code Playgroud)

c# xml validation xsd xmlreader

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

ExtensionlessUrlHandler和"递归太深;堆栈溢出"

我正试图让一个开发人员的应用程序在我的机器上工作.解决方案是使用Web API在VS 2015中构建的,我使用64位IIS Express运行它.每个请求都返回500.0错误.请求跟踪日志说明了这一点:

1517.  -MODULE_SET_RESPONSE_ERROR_STATUS 
ModuleName    ManagedPipelineHandler 
Notification  EXECUTE_REQUEST_HANDLER 
HttpStatus    500 
HttpReason    Internal Server Error 
HttpSubStatus 0 
ErrorCode     Recursion too deep; the stack overflowed. (0x800703e9) 
ConfigExceptionInfo
Run Code Online (Sandbox Code Playgroud)

相关的配置部分如下所示:

<system.webServer>
<handlers>
  <remove name="OPTIONS" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

其他可能相关的事实:

  • 这台机器以前还没有用于网络托管,但我已经做了很多VS2013开发,并且上周只安装了2015年来运行这个项目.
  • 该项目确实包含一些C#6.0功能,即新的字符串插值好东西.

我怎么会开始调试这个?我在Google上获得了相关的点击率.

stack-overflow url-routing iis-express asp.net-web-api

11
推荐指数
1
解决办法
615
查看次数