Bezpieczeństwo aplikacji ASP.NET oraz MVC3 na TGD.NET

Toruńska Grupa Deweloperów .NET ma przyjemność zaprosić na 24 spotkanie podczas którego odbędą się dwie prezentacje:

Piotr Buler poprowadzi: “Bezpieczeństwo aplikacji ASP.NET”

O czym będzie:
Prezentacja wprowadzająca w tematykę bezpieczeństwa, przedstawiająca podstawowe zagadnienia i sprawy z nim związane (1. część) oraz pokazująca mechanizmy pozwalające tworzyć bezpieczne aplikacje w ASP.NET Framework (2. część). Wybrane przykłady ataków (np. SQL Injection) “na osłodę” teoretycznej części spotkania.
Agenda:

  1. Bezpieczeństwo – ogólny zarys (security overview) (1. cz.)
  2. Dlaczego jesteśmy potencjalną ofiarą ataku?
  3. Szyfrowanie (data encryption)
  4. Zabezpieczenia w platformie .NET (2. cz.)
  5. Wybrane przykłady ataków

O prelegencie:
Piotr Adam Buler – student informatyki na WMiI UMK. Zainteresowania:

  • tworzenie aplikacji webowych
  • bezpieczeństwo w internecie

Ireneusz Koszek poprowadzi: “Umarł król (MVC2) niech żyje król (MVC3)”

O czym będzie:
Podczas prezentacji poruszone będą tematy nowości jakie niesie ze sobą najnowsze wcielenie ASP.NET MVC.
Agenda:

  1. krótki wstęp do MVC
  2. razor view engine – nowy view engine by microsoft
  3. lepsze wsparcie dla javascript – remote validation, unobtrusive java script, wbudowane wsparcie dla JSON’a
  4. partial page caching
  5. nowy zestaw helperów (facebook, bing, google analytics, Chart(), WebGrid(), Crypto(), WebMail(), itd)
  6. nowe atrybuty
  7. sessionless controllers
  8. global filters
  9. dynamic ViewModel
  10. nowe ActionResult (HttpNotFoundResult, PermanentRedirectResult, HttpStatusCodeResult)
  11. nowe możliwości automatycznej walidacji modelu
  12. NuGet package manager – package manager dla ASP.NET
  13. lepsza integracja z IoC containers, extensibility points

Dodatkowo:
W związku z przygotowaniami do organizacji przez TGD.NET konferencji na temat aplikacji i gier na urządzenia mobilne wszystkich zainteresowanych pomocą w ogranizacji zapraszamy na małą pogawędkę na ten temat w mniej oficjalnej atmosferze w jednym z toruńskich klubów.
Jeżeli nie możesz przybić, a chcesz pomóc przy organizacji możesz łatwo się z nami skontaktować (na przykład odpowiadając na tego maila).

Gdzie i kiedy:
Spotkanie odbędzie się 14 grudnia od godziny 17:00 w SALI S3 na Wydziale Matematyki i Informatyki UMK (ul. Chopina 12/18) . Wstęp na wykład jest wolny. Rejestracja na spotkanie jest obowiązkowa.
(Link dla osób korzystających z Codeguru: Rejestracja na spotkanie)


ASP.NET Button i jQuery dialog

jQuery jak zapewne każdy wie jest bardzo przydatnym i użytecznym narzędziem. jQuery UI to zestaw wtyczek (możemy je nazwać kontrolkami), które pozwalają na szybkie “upiększenie” naszej strony. Okazuje się jednak, że bywają pewne kolizje na drodze jQuery UI i ASP.NET. Przykładem może tu być wykorzystanie pluginu “dialog” dla kontenerów (np. div) zawierających przyciski ASP:Button.

<div id="dialogDiv">
   Dialog content
   <asp:Button id="btnDoSomething" runat="server" Text="Do something" onclick="btnDoSomething_click"/>
</div>

Okazuje się, że gdy chcemy wykonać $(“#dialogDiv”).dialog(‘open’); to niestety przycisk, który się znajduje w wyskakującym okienku przestaje działać. Aby tego uniknąć musimy dodać wykorzystać poniższy kawałek kodu.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function showjqdialog(){
   jQuery(document).ready(function() {
      var dlg = $("#dialogDiv").dialog({
            modal: true,
            overlay: {
                backgroundColor: '#000',
                opacity: 0.5
             },
           width:500
      });
      dlg.parent().appendTo(jQuery("form:first"));
      dlg.dialog('open');
   });
}

Najważniejszy fragment to ustawienie rodzica naszego okienka na formularz dokumentu tak, aby mógł on przejąć akcję przycisku. Chodzi tu oczywiście o fragment:

1
dlg.parent().appendTo(jQuery("form:first"));

Dodatkowo pokazanie okna dialogowego najlepiej jest wykonać w momencie gdy dokument jest już w pełni załadowany. Chodzi tu oczywiście o fragment jQuery(document).ready(function() {…});

Dla dopełnienia informacji na temat jQuery UI dialog i działania z ASP.NET kilka słów na temat jak go uruchomić warunkowo z code behind. Otóż w metodzie obsługującej kliknięcie przycisku dodajemy:

1
2
3
if(showDialogCondition){
   ClientScript.RegisterStartupScript(Page.GetType(), "dialogscript", "<script type="\"text/javascript\""><!--mce:0--></script>");
}

Dzięki temu podczas ładowania strony zostanie doładowany kawałek skryptu odpowiedzialny za pokazanie okna dialogowego. Pamiętając o tym, że czekamy w funkcji showjqdialog() na załadowanie dokumentu mamy pewność o poprawnym działaniu kodu.


Mój artykuł na codeguru.pl – WCF w praktyce. Część 6 – Wiązania (binding)

Po nieco dłuższej przerwie przyszedł czas na kolejną odsłonę cyklu poświęconego pracy z Windows Communication Foundation. Tym razem na warsztat trafiły wiązania (ang. bindings). Oczywiście jest to preludium możliwości jakie niosą za sobą wiązania, jednakże bez opowiedzenia o nich cykl mijałby się z celem.

Następny temat dotyczy punktów końcowych i ich adresów, co pozwoli domknąć kwestie nakreślenia kierunku, w którym należy podążać siadając do technologii WCF. W dalszej kolejności przedstawię natomiast nowości jakie przyniosła nowa odsłona .NET Framework w kontekście Windows Communication Foundation. Gorąco zapraszam do lektury całego cyklu.

Bezpośredni link do artykułu.


Spotkajmy się: ITAD na PJWSTK

Już w najbliższą środę zapraszam was na moją sesję poświęconą architekturze SOA (ang Service Oriented Architecture) oraz technologii WCF. Prezentację poprowadzę w ramach IT Academic Day na Polsko Japońskiej Wyższej Szkole Technik Komputerowych w Warszawie i będzie miała ona tytuł “SOA + .NET = WCF“.

Pozostali prelegenci to Daniel Dudek, Tomasz Wiśnieski, Tobiasz Koprowski i Paweł Lipiński, zatem naprawdę watro przyjść i posłuchać! Gorąco zapraszam!

Jeżeli nie możecie się pojawić podczas konferencji ma być udostępniony live streaming, co pozwoli dostrzeć do jeszcze większej liczby odbiorców niż tak, którą pomieści aula. Na tych, którzy zdecydują się przyjść czekają atrakcyjne nagrody, wśród których jest XBOX 360 + Kinect! Oj będzie sie działo…

Szczegółowe informacje znajdziecie na stronie konferencji.


Załączników ciąg dalszy…

Jakiś czas temu pisałem o miłym zaskoczeniu dotyczącym załączników w Thunderbird. Dziś tak się złożyło, że skorzystałem z mojej poczty przez stronę i moje zaskoczenie było równie duże. Okazuje się bowiem, że GMAIL rownież zna słowa związane z załącznikami i potrafi nas o tym poinformować:

gmail attachment info

Podobnie sprawa wygląda w przypadku słowa “załączam”. Niestety machanizm nie działa dla np “przesyłam” i “załącznik” – te drugie moim zdaniem powinno się znaleźć na liście rozpoznawanych słów…

Werdykt – nie jest źle, ale mogłoby być lepiej :)


WCF i Handler “svc-Integrated” has a bad module “ManagedPipelineHandler” in its module list

Czas na trzeci już i ostatni błąd na który natrafiłem przy próbach wdrożenia serwisu WCF na serwer IIS. Brzmi on następująco:

Handler “svc-Integrated” has a bad module “ManagedPipelineHandler” in its module list Handler "svc-Integrated" has a bad module "ManagedPipelineHandler" in its module list

Podobnie jak w przypadku wcześniejszego błędu “The page you are requesting cannot be served because of the extension configuration” wystarczy wykorzystać narzędzie dostarczone z Visual Studio i dostępne w Visual Studio Command Prompt. Jest nim aspnet_regiis.exe. Podobnie jak poprzednie uruchamiamy je z parametrem -i. Zatem całość prezentuje się następująco:

aspnet_regiis.exe -i

aspnet_regiis.exe -i

Oczywiście należy pamiętać o uruchomieniu Visual Studio Command Prompt w kontekście administratora, gdyż w przeciwnym wypadku operacja ta się nie powiedzie.

Przyczyną tych błędów jest fakt, że zanim zainstalowałem serwer IIS miałem już zainstalowane Visual Studio. Jeżeli rozpatrujemy odwrotną kolejność instalacji, wowczas VS samodzielnie rejestruje i dodaje do systemu odpowiednie komponenty. Nie mniej jednak jeżeli podobnie jak ja zamienicie kolejność, wówczas te trzy posty mogą wam się przydać.

Dla przypomnienia wcześniejsze potyczki z błędami:

WCF i The page you are requesting cannot be served because of the extension configuration
WCF i This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.


WCF i This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

Drugi problem, na który natrafiłem przy instalacji serwisu WCF na IIS brzmiał

This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

Co w tej sytuacji zrobić. Okazuje się, że tym razem sprawa jest dużo prostsza niż w przypadku poprzedniego błędu. Tym razem wystarczy nieco namieszać w ustawieniach pól aplikacji serwera IIS. Problem polega na tym, że póla, w kontekście której uruchamiana jest usługa, działa w oparciu o niewłaściwą wersję .NET Framework. W moim przypadku ustawiona jest wersja 2.0, natomiast udostępniana przeze mnie usługa wymaga wersji 4.0. W związku z tym najwygodniej jest utworzyć w panelu zarządzania pólami aplikacji nową, na przykład o nazwie .NET 4 i w ustawieniach zaawansowanych wybrać odpowiednią wersję .NET Framework

application pool settings

Kolejnym krokiem jest wybranie dla naszej aplikacji nowo utworzonej póli z właściwą wersją Frameworka i gotowe.


WCF i The page you are requesting cannot be served because of the extension configuration

W momencie gdy chcemy uruchomić na serwerze IIS usługę stworzoną przy pomocy technologii WCF pojawia się nieoczekiwany błąd:

The page you are requesting cannot be served because of the extension configuration. If the page is a script, add a handler. If the file should be downloaded, add a MIME map.

The page you are requesting cannot be served because of the extension configuration

Dzieje się tak w przypadku odwołania do plików *.SVC, które są odpowiedzialne za udostępnianie kontraktów usług na zewnątrz.

W jaki sposób go rozwiązać? Otoż pierwsze co należy zrobić, to uruchomienie Visual Studio Command Prompt w trybie administratora. Następnie należy udać się do katalogu:

%windir%\Microsoft.NET\Framework\v3.0\Windows Communication Foundation

W tymże katalogu znajduje się narzędzie ServiceModelReg.exe, które należy uruchomić z parametrem -i. W wyniku otrzymujemy informację o zainstalowaniu poszczególnych komponentów niezbędnych do uruchomienia usług WCF przy pomocy serwera IIS. Wynik działania polecenia widoczny jest poniżej.

 ServiceModelReg.exe -i result


Na dobry początek tygodnia – Productivity Power Tools

Jest poniedziałek rano, jak zawsze na początek tygodnia “prasówka” po ulubionych portalach tematycznych. Aby z tej okazji dać wam do przeczytania coś ciekawego postanowiłem zabrać się za Productivity Power Tools a dokładniej to, na co niewiele osób zwraca uwagę. Wszyscy rozpisują się o tym jak fajnie jest mieć dodatki, które PPT w sobie ma takie jak:

– podświetlanie aktywnej linii

– przypinanie i kolorowanie zkaładek oraz oznaczanie niezapisanych plików (czerwona kropka na zakładce)

– nakładka na dodawanie referencji pozwalająca je grupować i filtrować

– solution navigator, który pozwala szybciej poruszać się po logicznej zawartości solucji oraz pozwala na filtrowanie po nazwach, ale i stanach plików (otwarty, niezapysany itp)

– zaznaczanie całej linii potrójnym kliknięciem

– kombinacja Ctrl + Klik przenosi do definicji obiektu – w zastępstwie za F12 – zależy

– automatyczne domykanie nawiasów i tego typu dwuznaków (np cudzysłowy) – do tej funkcji trzeba się przyzwyczaić, gdyż na początku pojawia się nam ich nadmiar jeżeli domykamy je sami automatycznie :)

– wiele wiele innych…

Owszem – te dodatki są przydatne, ale NIE KAŻDY wie o tym co moim zdaniem jest najciekawsze! Chodzi tu mianowicie o okienko pomocy komend (Quick Access). Uruchamiamy je skrótem Ctrl + 3. Dlaczego jest ono moim zdaniem takie pomocne? Visual Studio posiada wbudowane ponad 4000 komend – tak twierdził na MTS 2010 Chris Granger z teamu Visual Studio. Nie wyobrażam sobie zapamiętania ich wszystkich, a nawet 10%. Przyznaję, że 1% jest jeszcze realny, ale gdzie tu do wykorzystania możliwości środowiska. Jeżeli korzystam z czegoś w 1%, to trzeba się zastanowić co zrobić, by zwiększyć ten współczynnik… Quick Access podpowiada możliwe komendy na podstawie wpisanej przez nas frazy. Wybraną opcję możemy zatwierdzić klawiszem Enter, co dodatkowo przyspiesza korzystanie z tej opcji. Dzięki temu nie ma konieczności pamiętania skrótów klawiaturowych (o ktorych pisałem w jednym z wcześniejszych postów), opcji włączania i wyłączania dodatkowych okien itp itd. Jedyne co jest potrzebne to świadomość istnienia pewnych możliwości i zwerbalizowanie ich w Quick Access. Dzięki temu osiągnięcie 10% (a nawet i więcej) wykorzystania możliwych (i pomocnych w pracy) komend staje się bardziej realna, a dodatkowo nie jest uciążliwą pamięciówką.

Productivity Power Tools można pobrać za darmo ze stron Visual Studio Gallery.


Kajakiem przez ocean – Google Maps vs Bing Maps

Dzisiejszy Teleexpress przyniósł niespodziewaną nowinę. Najpopularniejszym sposobem na znalezienie drogi z punktu A do punktu B jest zapewne Google Maps. Jak się okazuje nie można im do końca ufać, chyba że jest się kaskaderem, lub szalonym podróżnikiem (bijącym rekor świata)! Jeżeli wybierasz się samochodem z Tokio do Los Angeles, to GM proponuje wybrać się kajakiem przez ocean!

Postanowiłem sprawdzić jak to wygląda na Bing Maps. Okazuje się, że BM zwyczajnie przyznaje się do tego, że nie można obliczyć takiej trasy.

From Tokio to Los Angeles with Bing Maps

Jak widać, czasem co za dużo to niezdrowo 😛

P.S. Mam nadzieję, że nie znalazła się osoba, która na ślepo podążyła szlakiem google :)


  • O mnie

    Maciej Grabek

    Moje profile na:

    MVP

    Codeguru.pl GoldenLine
    Twitter CodeProject

  • english version
  • Polecam

  • Copyright © Maciej Grabek. All rights reserved.
    Powered by WordPress
    %d bloggers like this: