2013-02-28 13 views
5

Buduję witrynę w asp/C#, którą muszę wdrożyć na wielu serwerach zarządzanych przez osoby zewnętrzne.Unikaj kradzieży kodu w wdrożonej witrynie internetowej C# asp

Muszę unikać ludzi, którzy mają dostęp do serwera uzyskującego dostęp do naszego kodu i ponownego użycia go.

Jedną z opcji, które do tej pory słyszałem, jest to, że mogę sprawdzić adres MAC wewnątrz kodu, jednak adres MAC może zostać zmieniony przez użytkowników.

Jakie są najbezpieczniejsze dostępne opcje, aby uniknąć tego rodzaju sytuacji?

+0

Chcesz uniknąć publikowania plików CS lub co? –

+0

czy nie jest to niezgodne z zasadami hostingu? "używając swojego kodu aplikacji" – mdcuesta

+0

masz na myśli, że mogą użyć reflektora, aby zobaczyć kod? –

Odpowiedz

3

masz kilka opcji, ale jak skomentowany przez wiele ... może nie są one warte.

  • prawne: Czy ludzie zewnętrznych, które działają na serwerze, aby podpisać umowę o poufności.
  • Zaufani ludzie zewnętrzni: Zatrudnij osoby, którym ufasz. Znajomi, starzy współpracownicy itp.
  • Serwer Dummy: W zależności od tego, co chcesz zrobić przez osoby zewnętrzne, możesz utworzyć fałszywą wersję swojej aplikacji. Na przykład, jeśli chcesz, aby ludzie zewnętrzni instalowali i konfigurowali usługi WCF IIS &, wdrażaj tylko fałszywą wersję usług WCF, które nic nie robią. Później, po wykonaniu pracy przez zewnętrzne osoby, możesz zastąpić swój fałszywy kod rzeczywistym kodem.
  • Kod zaciemnienia: Możesz zaciemnić swój kod za pomocą jakiegoś narzędzia, które utrudni. (Harder nie znaczy niemożliwe)
  • Zabierz swój kod: Jak Mahmoud Fayez sugeruje, być może jest możliwe aby wziąć kodu do niektórych serwisów internetowych zewnętrznych i mieć swój interfejs całkowicie bez jakiejkolwiek logiki. Zależy to jednak od tego, co ludzie zewnętrzni zrobią dla Ciebie i od szczegółów Twojej aplikacji.

Jedyna wiarygodna jest:

  • wdrażania na własnym serwerze: Jeśli kod jest tak czuły, że chcesz, aby zagwarantować, że nikt go skopiować, a następnie zrobić samemu rzeczy. Żadne zadanie administracyjne nie jest wystarczająco trudne dla programisty z wystarczającą ilością czasu i motywacji..
2

Jedyna w 100% niezawodna metoda nie pozwala innym na dostęp do faktycznie wdrożonych plików.

Ponieważ kod musi być praca w pierwszej kolejności, wystarczająco zmotywowany cracker uzyska podstawowe źródło bez względu na to, co zrobisz.

You can audit your deploy folders, więc masz dziennik dostępu: nie zapobiegniesz interakcji, ale przynajmniej wiesz, kto dostanie co ... Lepsze niż nic.

+0

Twoje słowa są prawdziwe i unikam tego w 99% przypadków. Nie mamy wyboru w tej sytuacji i musimy wdrożyć go na swoich serwerach. Chociaż doceniam twój komentarz dotyczący stwierdzenia, że ​​jest to niemożliwe, co mogę zrobić, aby zminimalizować ryzyko i powstrzymać użytkowników od próby? – James

+0

Powinieneś wymagać, aby audyt był aktywny w folderach w ramach umowy licencyjnej. W odpowiedzi podłączyłem pomocne informacje. – Alex

1

Opcja, która daje najwięcej cotrol: nie wdrażaj jednego zewnętrznego serwera zarządzanego przez osoby zewnętrzne.

Cała reszta będzie miała mniej opcji, aby chronić swój kod i wystarczy zdecydować, w której cenie można zapłacić.

+0

Nie mam wyboru w tej sytuacji dotyczącej lokalizacji wdrożenia. Chcę podjąć próbę zminimalizowania ryzyka ponownego użycia kodu, jakie mam opcje? – James

+1

Następna najlepsza opcja (która niestety obejmuje większość istniejącego kodu) - pisz ciężko, aby przeczytać kod bez jakiejkolwiek struktury, dokumentacji ... Poważnie @cad (+1) dostarczył ci więcej opcji. –

0

Możesz "opublikować" stronę internetową zamiast umieszczać cały kod źródłowy na serwerze, który zamienia go w skompilowaną stronę internetową.

można znaleźć przewodnika here

+0

Kod jest już opublikowany. Mogą jednak po prostu pobrać opublikowany kod i ponownie użyć go w innym miejscu, jeśli chcą utworzyć identyczne wystąpienie już istniejącego kodu. Co mogę zrobić, aby tego uniknąć? – James

+0

@James, jeśli kodowanie jest tak dobrze zorganizowane i udokumentowane, że dowolne przypadkowe "osoby" mogą je pobrać i wdrożyć w dowolnym miejscu - dlaczego nie wdrożyć siebie (tj. Jedna z usług chmurowych, takich jak Microsoft Azure, Amazon AWS, Google App Engine) –

+0

@AlexeiLevenkov Klient stwierdził bardzo wyraźnie, że kod musi znajdować się na ich serwerach. Jest to najprawdopodobniej ze względu na ich bezpieczeństwo, a nie moje. – James

0

Aplikacja internetowa zwykle nie może być całkowicie "zamkniętym" źródłem.

Poza skompilowanych bibliotek DLL (może być ukrywane) w kosza, nie musi być trochę "open source" na łamach widzenia (.aspx, .ascx, .master, .cshtml)

Jeśli chcesz 100 % closed, możesz rozważyć użycie niestandardowego sposobu wyświetlania widoków, aby można było spakować wszystko w bibliotece DLL i napisać kod obsługi http, aby obsługiwał różne adresy URL.

0

Jeśli musisz to zrobić, sugeruje to, że robisz coś złego na poziomie korporacyjnym. Najlepszym postępowaniem nie jest zwykle zapobieganie piractwu, ale jego akceptacja. Spraw, aby kod był łatwo dostępny dla każdego, wrzuć go na strony torrentowe, jeśli zajdzie taka potrzeba, ale pozwól, aby działał w bardzo ograniczonym zakresie - powiedzmy, tylko jedno połączenie na raz, więc rejestracja i zakup licencji wykazują wyraźne zalety.

Jeśli sprawisz, że twoja licencja będzie przejrzysta i przystępna cenowo, i nie będzie motywacji do pirackiego oprogramowania, a zapobieganie jest zawsze lepsze niż leczenie.

Powiązane problemy