问题列表 - 第28101页

如何安全地配置数据库连接

相似但不一样:

大家好,我有一个C#WinForms应用程序连接到数据库服务器.数据库连接字符串(包括通用用户/传递)放在NHibernate配置文件中,该文件与exe文件位于同一目录中.

现在我遇到了这个问题:运行应用程序的用户不应该知道普通数据库用户的用户名/密码,因为我不希望他直接在数据库中搜索.

或者,我可以硬编码连接字符串,这是不好的,因为管理员必须能够在移动数据库时更改它,或者如果他想在dev/test/prod环境之间切换.

很久以来我发现了三种可能性:

  1. 通常通过使文件仅对运行应用程序的用户可读来回答第一个引用的问题.

    但在我的情况下这还不够(运行应用程序的用户是一个人.数据库用户/通行证是一般的,甚至不应该被人访问.)

  2. 第一个答案还建议在将连接数据写入文件之前加密连接数据.

    使用这种方法,管理员不再能够配置连接字符串,因为他无法手动加密.

  3. 第二个引用的问题提供了这种非常情况下的做法,但似乎很复杂.

我向你提问:

  1. 这是一个非常普遍的问题,所以没有任何一般的"怎么做"的方式,不知何故是一种"设计模式"?

  2. .NET的配置基础架构是否有一些支持?

  3. (可选,可能超出范围)我可以轻松地将其与NHibernate配置机制结合起来吗?

更新:

回答第一个答案:有几个原因我想直接连接到数据库而不使用Web服务:

  • (N)Hibernate只能用于数据库,而不能用于web服务(对吗?)
  • 我们计划提供离线功能,即如果数据库或网络应该关闭,用户可以继续他的工作.为了解决这个问题,我正在考虑拥有一个本地的进程内数据库,例如SQL Server Compact,并且只要它再次启动,就可以使用MS Sync框架将它与服务器数据库同步.

您是否有任何进一步的想法考虑到这一点?

c# database nhibernate connection-string app-config

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

两个正则表达式的交集

我正在寻找功能(PHP将是最好的),无论是否存在字符串匹配regexpA和regexpB,它都返回true.

例1:

$regexpA = '[0-9]+';
$regexpB = '[0-9]{2,3}';
Run Code Online (Sandbox Code Playgroud)

hasRegularsIntersection($regexpA,$regexpB)返回TRUE因为'12'匹配两个正则表达式

例2:

$regexpA = '[0-9]+';
$regexpB = '[a-z]+';
Run Code Online (Sandbox Code Playgroud)

hasRegularsIntersection($regexpA,$regexpB) 返回FALSE,因为数字永远不会与文字匹配.

感谢您提出如何解决此问题的任何建议.

亨利

php regex

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

通过DOMDocument获取具有子节点的节点的内容

我有以下html:

<html ><body >Body text <div >div content</div></body></html>
Run Code Online (Sandbox Code Playgroud)

如果没有嵌套,我怎么能得到身体的内容<div>?我需要获取"正文",但不知道如何做到这一点.

跑步的结果

$domhtml = DOMDocument::loadHTML($html);
print $domhtml->getElementsByTagName('body')->item(0)->nodeValue;
Run Code Online (Sandbox Code Playgroud)

是'正文textdiv内容',这不是我想要的

html php xml parsing domdocument

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

抽象工厂设计模式来创建对象?为什么我们不能只使用new运算符?

为什么我们需要一个抽象工厂设计模式来创建对象?为什么我们不能只使用new运算符?答案是,避免紧密耦合对象.但我不知道怎么样?任何人都可以解释代码(将非常有用).

什么使抽象工厂设计模式有用和什么时候.

提前致谢.哈莎T.

c# design-patterns

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

在程序中调用守护进程(0,0)和启动程序在后台并重定向它的输出是否有区别?

在程序'progX'的开头有下面的代码是否有区别?

if(daemon(0, 0) == -1)
{
    printf("daemon error: %s", strerror(errno));
}
Run Code Online (Sandbox Code Playgroud)

或通过以下命令运行'progX':progX&2>/dev/null 1>/dev/null 0>/dev/null

c linux

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

如何在C#中使用flag属性从枚举中取出位掩码值?

在我们的数据库中,我们有一个位掩码,表示用户可以进行的操作类型.

在我们的C#客户端中,当我们从数据库中检索此整数值时,我们构造一个枚举/标志.它看起来有点像:

[Flags]
public enum SellPermissions
{
    Undefined = 0,
    Buy = 1,
    Sell = 2,
    SellOpen = 4,
    SellClose = 8
    // ...
}
Run Code Online (Sandbox Code Playgroud)

在我们的应用程序中,我有一个编辑权限页面,然后我用它来修改此枚举的值,使用不同枚举值的按位OR.

permissions = SellPermisions.Buy | SellPermissions.Sell;
Run Code Online (Sandbox Code Playgroud)

现在,在进行这些更改之后,在我的数据库调用中,我需要调用一个期望整数值的更新/插入sproc.

如何从我的枚举/标志中取回整数按位值,以便在数据库中设置修改后的权限?

c# enums bit-manipulation bitmask

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

POSIX 模块的问题

将我的 mod_perl 站点从 Linux 托管移动到 FreeBSD 后,日志文件中出现以下错误:

您的供应商尚未定义 POSIX 宏 SIGRTMIN,在 ../../lib/POSIX.pm (自动拆分为 ../../lib/auto/POSIX/SigRt/_init.al)第 993 行使用\n

该脚本仅导入 POSIX 并使用一些函数(ceil 等)

我该如何解决这个问题?

perl posix freebsd mod-perl

4
推荐指数
2
解决办法
1265
查看次数

如何使用CDI从外部库中注入bean?

如何使用JSR-299 CDI从外部库中注入(未注释)bean?

例子:

接口X及其实现来自第三方lib.我如何决定使用哪种实现?

class A {

    @Inject 
    private X x;

}
Run Code Online (Sandbox Code Playgroud)

如果我有几个类使用X接口但不同的实现怎么办?

class A {

    @Inject 
    private X x; // should be XDefaultImpl

}

class B {

    @Inject 
    private X x; // should be XSpecialImpl

}
Run Code Online (Sandbox Code Playgroud)

java dependency-injection jsr299 java-ee cdi

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

代码分析警告CA1004使用通用方法

我有以下通用方法:

// Load an object from the disk
public static T DeserializeObject<T>(String filename) where T : class
{
    XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));

    try
    {
        TextReader textReader = new StreamReader(filename);
        var result = (T)xmlSerializer.Deserialize(textReader);
        textReader.Close();
        return result;
    }
    catch (FileNotFoundException)
    { }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到以下警告:
CA1004:Microsoft.Design:考虑一种设计,其中'MiscHelpers.DeserializeObject(string)'在任何调用中都不需要显式类型参数'T'.

我已经考虑过了这一点,我不知道如何通过限制可以反序列化的类型来完成它的请求.我坦率地承认,我可能错过了解决这个问题的简单方法.

但如果我不是,那么我唯一的办法是压制这个警告吗?我有一个没有警告或消息的干净项目.我想保持这种方式.

我想我在问"为什么这是一个警告?" 充其量这似乎应该是一个信息.甚至那似乎有点多.它可以或不能修复.如果它不能那么你只是坚持警告没有追索权,但压制它.我错了吗?

c# generics compiler-warnings

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

在保留其他人的同时添加/更改1 GET值的最佳方法?

如何在保留所有其他链接的同时创建一个仅添加或更改1 GET var的链接?

我有一个使用不同的GET变量创建的页面.

所以它会是这样的 mypage.php?color=red&size=7&brand=some%20brand

所以我希望有一个链接,将其设置为page = 2或size = 8.什么是最简单的方法来获得链接,而不重置所有其他变量?

我希望这是有道理的,如果我需要进一步解释,请告诉我

php

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