Как я могу фальсифицировать STDIN в Perl?

Эта страница на MSDN объясняет WCF Обязательная безопасность.

http://msdn.microsoft.com/en-us/library/ms729700.aspx

класс BasicHttpBinding, прежде всего, используется для взаимодействия с существующими веб-сервисами, и многие из тех сервисов размещаются Internet Information Services (IIS). Следовательно, транспортная безопасность для этой привязки разработана для бесшовного взаимодействия с сайтами IIS. Это сделано путем установки режима безопасности для Переноса и затем установки клиентского учетного типа. Учетные значения типа соответствуют механизмам безопасности каталога IIS. Следующий код показывает устанавливаемый режим и учетный набор типа на Windows. Можно использовать эту конфигурацию, когда оба клиента и сервера находятся на том же домене Windows.

C#

BasicHttpBinding b = new BasicHttpBinding();
b.Security.Mode = BasicHttpSecurityMode.Transport ;
b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;

Или, в конфигурации:

   
   
            
               
                 
                
               
    

Для включения ssl, без входа в систему, устанавливают clientCredentialType ни на "Один".

Опции для режима безопасности:

Ни один, Транспорт, сообщение, TransportWithMessageCredential и TransportCredentialOnly

можно найти больше деталей в: http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx

22
задан brian d foy 31 July 2009 в 21:13
поделиться

2 ответа

Следующий минимальный сценарий, похоже, работает:

#!/usr/bin/perl

package TestClass;
use strict;
use warnings;

sub new {
    my $class = shift;
    return unless <STDIN> eq "1\n";
    bless {} => $class;
}

package main;

use strict;
use warnings;

use Test::More tests => 1;

{
    open my $stdin, '<', \ "1\n"
        or die "Cannot open STDIN to read from string: $!";
    local *STDIN = $stdin;
    my $test = TestClass->new;
    isa_ok( $test, 'TestClass');
}

Вывод:

C:\Temp> t
1..1
ok 1 - The object isa TestClass
7
ответ дан 29 November 2019 в 05:33
поделиться

Если программа читает из STDIN , тогда просто установите STDIN как открытый дескриптор файла, которым вы хотите, чтобы он был:

#!perl

use strict;
use warnings;

use Test::More;

*STDIN = *DATA;

my @a = <STDIN>;

is_deeply \@a, ["foo\n", "bar\n", "baz\n"], "can read from the DATA section";

my $fakefile = "1\n2\n3\n";

open my $fh, "<", \$fakefile
    or die "could not open fake file: $!";

*STDIN = $fh;

my @b = <STDIN>;

is_deeply \@b, ["1\n", "2\n", "3\n"], "can read from a fake file";

done_testing; 

__DATA__;
foo
bar
baz

Возможно, вы захотите чтобы узнать больше о typeglobs в perldoc perldata и подробнее о превращении строк в поддельные файлы в документации для open (ищите «Начиная с версии v5.8.0, perl имеет по умолчанию построено с использованием PerlIO. ") в perldoc perlfunc .

17
ответ дан 29 November 2019 в 05:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: