小编Dav*_*ell的帖子

C#中的插件模式

问题:
我正在构建一个接受文件,翻译执行它的框架.框架应该能够处理任何类型的文件,为此我提供了一种上传包含用于翻译执行文件的类和方法的DLL的方法.我在寻找,是定义插件界面最佳方式

解决方案A:
定义一组公开可用的接口.插件应该实现这些接口.

解决方案B:
定义一些公开可用的抽象类.插件应该继承并覆盖这些类上的抽象方法.

解决方案C: rcravens
在代码内部传递接口,创建一个公开可用的抽象类,以允许插件可扩展性.选择
此解决方案仅在接口之前选择,因为它启用了基本实现(在这种情况下很方便).它仅在抽象类之前被选中,因为它允许在代码中进行模拟.组合框架非常出色,但对于像这个应用程序那样只需要有限扩展性的轻量级东西来说有点过头了.

解决方案D: JayChris Shain
实现一个组合框架(例如Managed Extensibility Framework(MEF))并围绕它构建

如果出现任何新的解决方案,我会将它们添加到此列表中.答案将归于最能证明其解决方案合理的人(可能具有优势和局限性)

在此先感谢
Tech Test Dude

c# interface plugin-pattern

6
推荐指数
1
解决办法
4013
查看次数

MVC4 Ajax表单URL

有没有办法设置 AJAX表单的URL ?我正在寻找使用Ajax.BeginForm()语法的答案,以便我可以利用Microsoft的模型构造巫术,而无需自己重新解析url字符串.

有一种部分视图,foo.com.au/getFoo其上有一个ajax形式.ajax表单将发布到Foo控制器(默认),getFoo动作.

当我从外部网站(bar.com.au)呼叫这个时,我希望它回发给foo.com.au/getFoo.而是发布到bar.com.au/getFoo.有没有办法告诉Ajax表单发布到完整的URL而不是相对路径?

动机
对于那些怀疑hax0rz或其他犯规游戏的人,我已经构建了一个集成在多个客户端站点的小部件.我现在正在为这个小部件构建一个身份验证插件.小部件不会将它们重定向到我的网站进行身份验证,因此我希望它使用用户名/密码输入表单的结果发回我的域.

asp.net-mvc asp.net-mvc-4

6
推荐指数
1
解决办法
1236
查看次数

在 Pytorch 自定义模块中添加模块

nn.Module使用将模块添加到自定义 pytorch 是否被认为是不好的做法self.add_module()?所有文档似乎都将图层分配给属性,然后在forward()方法中访问它们。

例如:

class ConvLayer(nn.Module):
    def __init__(self):
        self.add_module('conv',nn.Conv2d(...))
        self.add_module('bn',nn.BatchNorm2d(...))
Run Code Online (Sandbox Code Playgroud)

python pytorch

6
推荐指数
1
解决办法
2529
查看次数

散列和腌制密码字段

我一直在讨论如何将密码存储在我的数据库中一段时间​​的问题.这是我第一次使用Web登录创建安全的应用程序,所以我想设置一些好的做法.

首先,我读了哈希和盐腌.似乎这个想法是......

  1. 获取散列算法
  2. 从用户获取密码
  3. 将"salt"添加到用户的纯文本密码中
  4. 哈希整个密码(包括盐)
  5. 将salt存储在db中,以便以后可以检索它(用于验证PSWD)

这让我想到了......如果一个黑客知道你的盐(因为它存储在某个地方的数据库中,可能是一个名为this_is_not_the_salt_ur_looking_for或者同样含糊不清的列),他们可以重新生成密码字典并获得访问权限.

然后我有了一个主意.如果你存储在您的盐的散列密码字段.所以按照步骤1-4(随机生成盐),然后在步骤5中,将盐插入密码解释类或服务已知的密码中:

xxxxxsaltvaluexxxxxxxxxxxxxxxx

其中x是散列字符串值.任何人都可以看到这个问题吗?它完全没必要吗?

答:
没有理由不这样做.正如Yahia所述,其他保护密码的方法包括双(或n)散列.另一方面,BCrypt看起来几乎完全是一种阻止暴力攻击的好方法,但是我找不到一个可靠的C#库

谢谢!
TTD

c# database passwords hash

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

重新散列散列密码

假设知识
Hashing、Salting、PBKDF[1-2]

问题
我使用像 PBKDF2 这样的缩放散列/加盐算法在我的数据库中存储密码。我想‘嘿,如果我将密码散列 20000 次,那应该足够安全,可以抵御暴力攻击,对吗?它是真的。直到明年更好的电脑问世。

可能的解决方案

撇开加密密钥长度和盐长度的问题(也可以合并到这个解决方案中)我想,如果每 N 天,我重新散列数据库中的所有密码会怎样。所以它们被散列了 20,000 次,然后一周后,我又对它们进行了 500 次散列,使它们总共 20,500 次。将它在数据库中散列的次数存储在某处。这个想法是随着技术的进步增加哈希计数。

现有的类似实现
BCrypt引入了一个工作因素来增加哈希密码所需的时间:
PBKDF2使用多次迭代来做同样的事情。这被 Mac OS-X、windows 和 linux 用于文件级加密。Wi-Fi网络也使用它的实现。

任何人都可以看到这个问题吗?这个已经试过了?是否有一种算法可以接受预先散列的密码并将其重新散列“N”次?

编辑
问题不是多重散列是否安全(这已经过尝试和测试)。问题是重新散列以提高安全性,不必让用户重新设置他们的密码

解决方案:礼貌与 JVestry 讨论

因此,每隔“N”天重新散列所有密码是浪费时间,因为黑客可以使用数据库的旧副本破解它。但是,如果您将随时间增加哈希计数的概念与密码更新策略相结合,这个概念是合理的。

实施
所有密码每 30 天过期一次。当它们更新时,它们的哈希计数器会增加。因此,昨天的密码重置将比 20 天前的密码更难破解。哈希计数器可以存储或从使用最后修改日期的算法得出。

谢谢!

TTD

database security hash password-storage

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

解散并提交表格Bootstrap 3

我有一个表单内的bootstrap模式对话框.表单通过AJAX提交.我希望submit按钮也能解除模态(否则我最终会保留模态覆盖)

模态代码是:

@using (Ajax.BeginForm("SaveConfiguredReport", new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "report-details", OnBegin="preProcessing" }))
{
    <div class="modal fade" id="add-filter-dialog" tabindex="-1" role="dialog" aria-labelledby="add-filter-dialog" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <h4>Add a Filter</h4>
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                </div>

                <div class="modal-body">
                    <p>Adding filters allows you to sort what data will be included in the report. These filters will be default for all ongoing usage of this report.</p>
                    <div id="field-templates"></div>
                    <input type="hidden" id="field-template-id" name="FieldTemplateID" />

                    @Html.DropDownList("OperatorID", …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html5 razor twitter-bootstrap

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

将输出引用程序集构建到子文件夹

背景

我的程序集(一个 DLL)正在被第三方应用程序加载,我无法控制它是如何加载的。第三方应用程序将加载给定目录中的所有程序集。

问题

如果我的程序集和另一个程序集使用相同的库,但版本不同,它们将位于同一目录中并且会发生冲突。我已经研究了<probing>配置文件指令和程序集解析器,所以我知道如何创建一个子目录并让我的程序集搜索它的引用。

需要

我需要某种配置visual studio 的方法来将我的主DLL 构建到根文件夹中,并将所有引用构建到一个子文件夹中。最好在构建期间(因为我将构建配置为直接转到正确的文件夹。

.net c# build .net-assembly visual-studio

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

Tosca测试用例设计与类的关系

我正在对示例应用程序进行测试用例设计sampleapp.tricentis.com.我想以最可重用的方式进行测试设计,所以我把它分成了几类.

我想创建一个关系来产生燃料类型和里程的所有实例,但是当我这样做时,它会通知我This is a class reference, you must resolve this reference.这与我需要进行模块化测试设计相反.我无法在类级别创建关系,那么解决此问题的最佳方法是什么? TCD示例

testing automation tosca

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