Response.Redirect在坚持正确的层分离的同时,在模型 - 视图 - 展示器模式中调用a的最佳方法是什么?
目前,我在实现接口的类中实现了我的VaryByCustom功能 IOutputCacheVaryByCustom
public interface IOutputCacheVaryByCustom
{
string CacheKey { get; }
HttpContext Context { get; }
}
Run Code Online (Sandbox Code Playgroud)
实现此接口的类有一些约定,类的名称将为"OutputCacheVaryBy_______",其中空白是从页面上的varyByCustom属性传入的值.另一个约定是Context将通过构造函数注入来设置.
目前我的基础是enum和switch语句类似于
public override string GetVaryByCustomString(HttpContext context,
string varyByCustomTypeArg)
{
//for a POST request (postback) force to return back a non cached output
if (context.Request.RequestType.Equals("POST"))
{
return "post" + DateTime.Now.Ticks;
}
var varyByCustomType = EnumerationParser.Parse<VaryByCustomType?>
(varyByCustomTypeArg).GetValueOrDefault();
IOutputCacheVaryByCustom varyByCustom;
switch (varyByCustomType)
{
case VaryByCustomType.IsAuthenticated:
varyByCustom = new OutputCacheVaryByIsAuthenticated(context);
break;
case VaryByCustomType.Roles:
varyByCustom = new OutputCacheVaryByRoles(context);
break;
default:
throw new ArgumentOutOfRangeException("varyByCustomTypeArg");
}
return context.Request.Url.Scheme + …Run Code Online (Sandbox Code Playgroud) 如果我创建了一个html/jquery小部件,该小部件旨在放置在第三方网站上(用户需要具有极低的技术知识且可能缺少SSL证书)并使用jquery将AJT发布到安全的小部件信息中url发布的信息是否正确安全?
编辑:任何人都可以详细说明拥有一个没有SSL证书的网站的原始政策/含义吗?
脚本加载器是否取代了进行脚本组合的需要?
或者它们是真正的补充工具吗?
假设我有一个复杂的系统,那里有大量的树木.简单的想法是员工/经理关系,许多员工向一位经理报告.现在除了经理之外,还有能够代表经理行事的支持人员可以操纵经理的员工.
在CQRS系统中,您如何为"编辑员工"的假设操作建模消息,其中操作的调用者是支持人员.只有当经理安全关系中的工作人员对其领域的员工采取行动时,该行动才能成功.
验证此安全性将涉及查询数据库以验证被修改的人确实在该经理的员工链内.
这个查询会在哪里发生?在发起"编辑员工"消息之前?
如果在发起消息之前对数据进行了前期验证,则在最终一致的系统中,假设在处理"编辑员工"消息之前,已发生单独的操作,该操作将删除用户完成"编辑员工"操作的权限.如果命令处理程序未验证该消息的安全性问题,则即使用户不再具有执行该消息的权限,该消息仍将成功.
这似乎意味着双边验证,类似于UI验证和服务器端验证将是最佳的行动方案.然而,完成该验证的方法似乎违反了CQRS的关键原则.
在使用CQRS时,必须处理这些和其他类似的横切问题时,哪种方法最好?
我通过 nuget 添加了 common.logging.log4net 到我的 Visual Studio 2012 解决方案。
common.logging.log4net 版本。- 2.0.1 common.logging 版本。- 2.0.0 log4net - 版本。1.2.10
当我在本地构建/运行它时,我通过浏览器看到以下异常:
无法加载文件或程序集“Common.Logging”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040) 描述:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息:System.IO.FileLoadException:无法加载文件或程序集“Common.Logging”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
堆栈跟踪:
[FileLoadException: 无法加载文件或程序集“Common.Logging”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)]
[FileLoadException: 无法加载文件或程序集“Common.Logging, Version=2.1.1.0, Culture=neutral, PublicKeyToken=af08829b84f0328e”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean for BooleanIntrospection)
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(的AssemblyName assemblyRef,证据assemblySecurity,RuntimeAssembly reqAssembly,StackCrawlMark&stackMark,IntPtr的pPrivHostBinder,布尔throwOnFileNotFound,布尔forIntrospection,布尔suppressSecurityChecks)210
System.Reflection.RuntimeAssembly.InternalLoad(字符串assemblyString,证据assemblySecurity,StackCrawlMark&stackMark , IntPtr pPrivHostBinder, Boolean for Introspection) +242
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean for Introspection) +17 System.Reflection.Assembly.Load(String assemblyString) +35 …
这个问题在某种程度上是对这个新的ASP.NET安全漏洞有多严重的后续问题以及如何解决它?因此,如果我的问题似乎被打破,请首先阅读此问题及其已接受的解决方案,然后将其纳入我的问题的上下文中.
有人可以解释为什么返回相同的错误页面和相同的自定义错误状态代码很重要?我发现这是无关紧要的,特别是如果这是作为其工作的一部分提倡的话.
是不是脚本/应用程序执行此攻击同样容易,而不是特别关心它是否获得http状态代码以及结果更多?即这样做了4000次,你被重定向到一个错误页面,在4001你留在同一页面,因为它没有使填充无效?
我知道为什么在错误页面中添加延迟有点相关,但是这也不会只是添加另一层来欺骗脚本以为该站点是无效目标?
如果脚本考虑到,由于该站点是asp.net,它运行AES加密,它会忽略错误页面的时间并监视重定向或缺少重定向作为响应向量,可以做些什么来防止这种情况?如果脚本这样做意味着没有办法阻止它?
编辑:我接受时间攻击减少,但错误页面部分是真正的虚假.此攻击向量将其数据放入视图状态.只有2个案例.通过.失败.
要么失败,要么在页面上,并且视图状态不包含其数据.无论你在这里做什么,都无法删除失败案例,因为除非成功破解密钥,否则页面将永远不会包含其插入的数据.这就是为什么我无法证明自定义错误的使用是否具有任何效果.
或者通过,它们位于页面上,并且视图状态包含其插入的数据.
获取来自WebResoure.axd/ScriptResource.axd的密钥,并且使用验证密钥的第一个猜测来生成具有加密文本的潜在密钥的值.
此时此值传递给WebResource.axd/ScriptResource.axd,如果解密密钥被正确猜测,他们的响应将被接受但由于数据是垃圾,因此它正在寻找WebResource.axd/ScriptResource.axd将返回404错误.
如果未成功猜到解密密钥,则填充无效异常将收到500错误.此时,攻击应用程序知道增加潜在的解密密钥值并再次尝试重复,直到它从WebResource.axd/ScriptResource.axd找到第一个成功的404.
成功推导出解密密钥后,可以使用该网站来查找实际的机器密钥.
使用表单身份验证,当应用程序需要重定向到登录页面时,是否有一个事件或任何可扩展点,可以让我在重定向到登录页面之前对请求执行其他工作?
我想在查询字符串中发送可能不同的其他信息,以便在web.config中的loginUrl节点的链接中静态嵌入它.
编辑:为了澄清,我想在重定向到登录页面之前拦截请求.
例:
<authentication mode="Forms">
<forms loginUrl="http://the/interwebs/login.aspx" timeout="2880"
enableCrossAppRedirects="true" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
在用户被重定向到http://the/interwebs/login.aspx之前,我希望能够打包查询值,这样网址可能会像http://the/interwebs/login.aspx一样? =刷新
在初始化期间使用Lazy<T>类和标记有什么含义isThreadSafe: false?
在懒惰需要访问实例成员而不是在类构造函数中初始化lazy的静态成员的情况下,这会isThreadSafe: false 在所有用法中自动要求吗?
.net generics thread-safety lazy-evaluation base-class-library
当计划作为RecurringJob运行时,是否可以让Hangfire使用配置JobActivator实例化对象?
该方法的签名似乎强制静态只使用:
public static void AddOrUpdate<T>(
string recurringJobId,
Expression<Action<T>> methodCall,
Run Code Online (Sandbox Code Playgroud)
关于我如何"滥用"静电来支持通道事物,我有几个想法,但我觉得我可能会遗漏一些东西.有没有一个设计决定,hangfire只支持chron工作中的静态?
c# ×4
asp.net ×3
security ×3
.net ×1
.net-4.0 ×1
ajax ×1
asynchronous ×1
cqrs ×1
cryptography ×1
domain-model ×1
generics ×1
hangfire ×1
html ×1
https ×1
javascript ×1
loader ×1
log4net ×1
logging ×1
messaging ×1
mvp ×1
nuget ×1
redirect ×1
reflection ×1