小编Bil*_*ard的帖子

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

在DCOM调用中使用默认身份验证和单独的隐藏/模拟

我正在尝试用DCOM实现两件事(进程外)

  1. 使用CoInitializeSecurity及其参数pAuthList设置流程范围的身份验证.
  2. 在特殊情况下使用隐藏真实内容来改变呼叫者的身份(COM呼叫)

我的想法:

  1. AFAIK auth信息结构包含所有新COM调用的默认身份验证信息(如RPC_C_AUTHN_WINNT的用户名和密码).因此,COM应该使用auth结构中的信息而不是进程令牌.但是,所有COM调用/连接始终使用进程的标识而不是应用的默认标识.

  2. 通常,可以使用CoSetProxyBlanket来更改代理的身份验证信息.这适合我.我的问题是,如果我自己模仿令牌并调用COM函数,它是否必须工作.我已阅读各种MSDN文章,将EOAC_DYNAMIC_CLOAKING应用于CoInitializeSecurity应该可以使其正常工作.但是,我手动"模拟的COM调用始终在服务器端显示进程标识.

客户端看起来像这样(Delphi)

var
authList : SOLE_AUTHENTICATION_LIST;
authidentity : SEC_WINNT_AUTH_IDENTITY_W;
authInfo : array[0..1] of SOLE_AUTHENTICATION_INFO;

pcAuthSvc : DWORD;
asAuthSvc : array[0..0] of SOLE_AUTHENTICATION_SERVICE;
Token : TJwSecurityToken;

begin
ZeroMemory( @authidentity, sizeof(authidentity) );

authidentity.User := 'Testbenutzer';
authidentity.UserLength := Length('Testbenutzer');
authidentity.Domain := '';
authidentity.DomainLength := 0;
authidentity.Password := 'test';
authidentity.PasswordLength := 4;
authidentity.Flags := SEC_WINNT_AUTH_IDENTITY_UNICODE;


ZeroMemory( @authInfo, sizeof( authInfo ) );

// NTLM Settings
authInfo[0].dwAuthnSvc := RPC_C_AUTHN_WINNT;
authInfo[0].dwAuthzSvc := RPC_C_AUTHZ_NONE;
authInfo[0].pAuthInfo := @authidentity;



authList.cAuthInfo := 1;
authList.aAuthInfo := …
Run Code Online (Sandbox Code Playgroud)

delphi security com

43
推荐指数
1
解决办法
1877
查看次数

CertificateException:找不到与ssl.someUrl.de匹配的名称

我正在尝试通过ssl与Java连接到我的一台服务器.我尝试了很多选项,这是我最好的尝试:

我 使用以下命令生成带有推荐脚本的jssecacerts:http://blogs.oracle.com/andreas/resource/InstallCert.java:java InstallCert ssl.someUrl.de changeit

在此之后我第二次做了命令:

Loading KeyStore jssecacerts...
Opening connection to ssl.someUrl.de:443...
Starting SSL handshake...

No errors, certificate is already trusted

Server sent 1 certificate(s):

 1 Subject EMAILADDRESS=info@plesk.com, CN=plesk, OU=Plesk, O=Parallels, L=Hernd
on, ST=Virginia, C=US
   Issuer  EMAILADDRESS=info@plesk.com, CN=plesk, OU=Plesk, O=Parallels, L=Hernd
on, ST=Virginia, C=US
   sha1    f1 0d 2c 54 05 e1 32 19 a0 52 5e e1 81 6c a3 a5 83 0d dd 67
   md5     f0 b3 be 5e 5f 6e 90 d1 …
Run Code Online (Sandbox Code Playgroud)

java ssl plesk

43
推荐指数
6
解决办法
12万
查看次数

集合接口与数组

我们正在了解收集界面,我想知道你们是否对它的一般用途都有任何好的建议?对于不能用数组做的Collection,你能做些什么?你怎么能用一个你不能用Collection做的数组(除了允许重复)?

java collections

43
推荐指数
3
解决办法
2万
查看次数

如何使用python2.7获取公共IP?

如何使用python2.7获取公共IP?不是私人IP.

python ip

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

Google App Engine作为制作平台

我们即将开始研究新的商业网站项目,并将Google App Engine视为一个潜在的平台.

问题:

  1. Google App Engine是否真的可扩展,可以被视为商业项目的生产平台?
  2. 从长远来看,它是否比良好的托管公司服务更昂贵(或更便宜)?
  3. 将应用程序从Google App Engine移动到独立服务器/服务器场(例如将其用作私有系统,利用我们自己的硬件等)是否可能(并且非常便宜)?
  4. 是否有一些机制来处理DDoS攻击?
  5. 我可以对应用数据进行完整备份吗?

抱歉这些愚蠢的问题.

google-app-engine web-applications

42
推荐指数
2
解决办法
4058
查看次数

对heapsort的直观理解?

在学校我们正在学习Java中的排序算法,而我的作业是Heap Sort.我做了我的阅读,我试图尽可能多地发现,但似乎我无法掌握这个概念.

我不是要求你给我写一个Java程序,如果你可以像Heap Sort那样简单地向我解释.

java sorting algorithm heapsort

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

数组作业问题

您将获得一个整数介于1和1,000,000之间的数组.一个整数在数组中两次.你怎么决定哪一个?你能想到一种方法来使用额外的内存来做到这一点.

ALGO:

  • 解决方案1:
    1. 有一个哈希表
    2. 迭代数组并将其元素存储在哈希表中
    3. 一旦找到已经在哈希表中的元素,它就是dup元素
      优点:
      • 它在O(n)时间运行,只有1次通过
      缺点:
      • 它使用O(n)额外的内存
  • 溶液2:
    1. 使用合并排序(O(nlogn)时间)对数组进行排序
    2. 再次解析,如果你看到一个元素两次,你得到了dup.
      优点:
      • 它不使用额外的内存
      缺点:
      • 运行时间大于O(n)

你们能想到更好的解决方案吗?

arrays algorithm

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

mod_rewrite规则重定向除一个特定路径之外的所有请求

我正在尝试使用Apache 2.2 VirtualHost声明中的mod_rewrite将所有请求重定向到我的域到另一个域.有一个例外 - 我希望/audio路径中的所有请求都不会被重定向.

我写了一个RewriteCond和RewriteRule来做到这一点,但它不太正确,我无法弄清楚为什么.正则表达式包含字符串"/ audio"的负前瞻,但由于某种原因,这不匹配.这是定义:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net(?!/audio) [NC]
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
Run Code Online (Sandbox Code Playgroud)

如果我将RewriteCond更改为:

RewriteCond %{HTTP_HOST} ^(.*\.)?mydomain\.net/(?!audio) [NC]
Run Code Online (Sandbox Code Playgroud)

(即将正斜杠放在负前瞻部分之外)然后它可以正常工作,但这样做的缺点是不会重定向到没有尾部斜杠的mydomain.net请求.

谁能指出我做错了什么?

(注意:上面的RewriteRule位中的域周围的尖括号是由StackOverflow.com添加的 - 它们在实际代码中不存在!)


以下是规则:

<VirtualHost *:80>
ServerAdmin me@mydomain.net
DocumentRoot "/var/www/mydomain.net/htdocs"
ServerName www.mydomain.net
ServerAlias mydomain.net

RewriteEngine on
RewriteCond {REQUEST_URI} !^/audio
RewriteRule ^(.*)$ http://www.newdomain.net [L,R=301]
RewriteLog logs/mod_rewrite_log
RewriteLogLevel 3

ErrorLog logs/error_log
CustomLog logs/access_log common
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

谢谢@mercutio - 这很有道理,但它似乎仍然不起作用.

当我向http://mydomain.net/audio/something.mp3发出请求时,这是mod_rewrite日志所说的内容:

(2) init rewrite engine with requested uri /audio/something.mp3
(3) applying pattern '^(.*)$' to …
Run Code Online (Sandbox Code Playgroud)

apache mod-rewrite

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

Java Arrays.equals()为二维数组返回false

我只是很想知道 - 为什么Arrays.equals(double [] [],double [] [])返回false?实际上,当数组具有相同数量的元素并且每个元素是相同的?

例如,我进行了以下测试.

double[][] a,  b;
int size =5;

a=new double[size][size];
b=new double[size][size];

for( int i = 0; i < size; i++ )
    for( int j = 0; j < size; j++ ) {
        a[i][j]=1.0;
        b[i][j]=1.0;
    }

if(Arrays.equals(a, b))
    System.out.println("Equal");
else
    System.out.println("Not-equal");
Run Code Online (Sandbox Code Playgroud)

返回false并打印"不相等".

另一方面,如果我有这样的事情:

double[] a,  b;
int size =5;

a=new double[size];
b=new double[size];

for( int i = 0; i < size; i++ ){
    a[i]=1.0;
    b[i]=1.0;
} 

if(Arrays.equals(a, b))
    System.out.println("Equal");
else
    System.out.println("Not-equal");
Run Code Online (Sandbox Code Playgroud)

返回true并打印"Equal".该方法仅适用于单个尺寸吗?如果是这样,Java中的多维数组是否有类似的东西?

java arrays

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