Jak zabezpieczyć stronę internetową za pomocą https

87

Muszę zbudować małą aplikację internetową, aby firma mogła utrzymywać swoje dane biznesowe ... Tylko osoby w firmie będą z niej korzystać, ale planujemy udostępnić ją w domenie publicznej, aby pracownicy mogli łączyć się z aplikacją z różnych lokalizacji . (Do tej pory tworzyłem aplikacje internetowe, które są hostowane tylko wewnętrznie)

Zastanawiam się, czy wystarczy mi bezpieczne połączenie (https), czy tylko uwierzytelnianie formularzy.

Jeśli powiesz https, mam kilka pytań:

  1. Co powinienem zrobić, aby przygotować moją stronę na https. (Czy muszę zmienić kod / konfigurację)
  2. Czy SSL i https to jedno i to samo ...
  3. Czy muszę się z kimś ubiegać, aby uzyskać licencję czy coś.
  4. Czy muszę zabezpieczyć wszystkie moje strony, czy tylko stronę logowania ...

Szukałem odpowiedzi w Internecie, ale nie byłem w stanie uzyskać wszystkich tych punktów ... Pomocny byłby również dowolny dokument lub inne źródła ...

Jeśli potrzebujesz więcej informacji, nie wahaj się zapytać.

Dzięki

  • Radża
Król
źródło
Cześć wszystkim ... Dziękuję wszystkim ... Wszystkie Twoje odpowiedzi były bardzo pomocne ... Byłoby niesprawiedliwe wybranie tutaj jednej odpowiedzi ... (SO musi mieć rezerwę na takie sytuacje). w związku z tym wybrałem jedną odpowiedź i zagłosowałem za innymi ... Wybrana odpowiedź jest równie ważna jak inne odpowiedzi ...
The King
3
Dodatkowa ostrożność, w zależności od tego, jak poufne są informacje (na przykład dane osobowe mogą podlegać prawu federalnemu) oraz jakie stosunki i umowę masz z firmą, możesz zastanowić się, czy ponosisz odpowiedzialność, jeśli ktoś włamuje się do witryny.
huynhjl
Po zainstalowaniu certyfikatu na serwerze, aby dodać https do swojej witryny w usługach IIS, wystarczy przejść do witryny i „Edytuj powiązania”, wybrać https i wybrać certyfikat.
bgmCoder,

Odpowiedzi:

49

Co powinienem zrobić, aby przygotować moją stronę na https. (Czy muszę zmienić kod / konfigurację)

Powinieneś pamiętać o najlepszych praktykach dotyczących bezpiecznego kodowania (tutaj jest dobre wprowadzenie: http://www.owasp.org/index.php/Secure_Coding_Principles ), w przeciwnym razie wszystko, czego potrzebujesz, to poprawnie skonfigurowany certyfikat SSL.

Czy SSL i https to jedno i to samo ...

Prawie tak.

Czy muszę się z kimś ubiegać, aby uzyskać licencję czy coś.

Certyfikat SSL można kupić w urzędzie certyfikacji lub użyć certyfikatu z podpisem własnym. Te, które można kupić, różnią się bardzo ceną - od 10 do setek dolarów rocznie. Będziesz potrzebować jednego z nich, jeśli na przykład założysz sklep internetowy. Certyfikaty z podpisem własnym są realną opcją dla aplikacji wewnętrznej. Możesz również użyć jednego z nich do programowania. Oto dobry samouczek dotyczący konfigurowania certyfikatu z podpisem własnym dla usług IIS: Włączanie protokołu SSL w usługach IIS 7.0 przy użyciu certyfikatów z podpisem własnym

Czy muszę zabezpieczyć wszystkie moje strony, czy tylko stronę logowania?

Używaj protokołu HTTPS do wszystkiego, nie tylko do pierwszego logowania użytkownika. Nie będzie to zbyt duże obciążenie i będzie oznaczać, że dane, które użytkownicy wysyłają / odbierają z Twojej zdalnie hostowanej aplikacji, nie mogą być odczytane przez strony zewnętrzne, jeśli zostaną przechwycone. Nawet Gmail teraz domyślnie włącza HTTPS.

Rowlf
źródło
1
Możesz również otrzymać darmowe certyfikaty TLS, np. Z Let's encrypt
1615903
8

Jakie dane biznesowe ? Tajemnice handlowe lub po prostu rzeczy, których nie chcą, aby ludzie widzieli, ale gdyby się wydostały, nie byłoby to nic wielkiego? Jeśli mówimy o tajemnicach handlowych, informacjach finansowych, informacjach o klientach i rzeczach, które są ogólnie poufne. Więc nawet nie idź tą drogą.

Zastanawiam się, czy wystarczy mi bezpieczne połączenie (https), czy tylko uwierzytelnianie formularzy.

Zawsze korzystaj z bezpiecznego połączenia.

Czy muszę zmienić kod / Config

Tak. Cóż, może nie. Możesz poprosić o to eksperta.

Czy SSL i https to jedno i to samo ...

W większości tak. Ludzie zwykle nazywają te rzeczy tym samym.

Czy muszę się z kimś ubiegać, aby uzyskać licencję czy coś.

Prawdopodobnie chcesz, aby Twój certyfikat był podpisany przez urząd certyfikacji. Będzie to kosztować Ciebie lub Twojego klienta trochę pieniędzy.

Czy muszę zabezpieczyć wszystkie moje strony, czy tylko stronę logowania ...

Używaj protokołu HTTPS w całym tekście. Wydajność zwykle nie stanowi problemu, jeśli witryna jest przeznaczona dla użytkowników wewnętrznych.

Szukałem odpowiedzi w Internecie, ale nie byłem w stanie uzyskać wszystkich tych punktów ... Pomocny byłby również dowolny dokument lub inne źródła ...

Zacznij tutaj, aby uzyskać wskazówki: http://www.owasp.org/index.php/Category:OWASP_Guide_Project

Pamiętaj, że SSL to malutki element zapewniający bezpieczeństwo Twojej witryny internetowej, gdy jest ona dostępna z internetu. Nie zapobiega większości rodzajów włamań.

huynhjl
źródło
+1 za rozsądną poradę dotyczącą zabezpieczenia całej drogi i zapobiegania katastrofie, pytając, czy informacje są bardzo poufne i zalecając nie umieszczanie ich w Internecie
BlueTrin,
7

Myślę, że mylisz się z uwierzytelnianiem witryny i SSL.

Jeśli chcesz, aby Twoja witryna korzystała z protokołu SSL, musisz zainstalować certyfikat SSL na swoim serwerze sieciowym. Możesz kupić sobie certyfikat w jednym z miejsc, takich jak Symantec itp. Certyfikat zawierałby parę kluczy publiczny / prywatny oraz inne rzeczy.

Nie musisz nic robić w swoim kodzie źródłowym i nadal możesz nadal korzystać z uwierzytelniania formularza (lub dowolnego innego) w swojej witrynie. Po prostu każda komunikacja danych, która ma miejsce między serwerem WWW a klientem, będzie zaszyfrowana i podpisana za pomocą Twojego certyfikatu. Użytkownicy korzystaliby z bezpiecznego protokołu HTTP (https: //), aby uzyskać dostęp do Twojej witryny.

Zobacz to, aby uzyskać więcej informacji -> http://en.wikipedia.org/wiki/Transport_Layer_Security

Bhaskar
źródło
3

W przypadku danych biznesowych, jeśli dane są prywatne, użyłbym bezpiecznego połączenia, w przeciwnym razie wystarczy uwierzytelnienie formularzy.

Jeśli zdecydujesz się korzystać z bezpiecznego połączenia, pamiętaj, że nie mam doświadczenia w zabezpieczaniu witryn internetowych, po prostu przypominam sobie to, co napotkałem podczas własnego doświadczenia. Jeśli i tak się mylę, nie krępuj się mnie poprawić.

Co powinienem zrobić, aby przygotować moją stronę na https. (Czy muszę zmienić kod / konfigurację)

Aby włączyć SSL (Secure Sockets Layer) dla swojej witryny, musisz ustawić certyfikat, kod lub konfiguracja nie zostanie zmieniona.

Włączyłem SSL dla wewnętrznego serwera internetowego, używając OpenSSL i ActivePerl z tego samouczka online . Jeśli jest to używane dla większej liczby odbiorców (moja publiczność była mniejsza niż 10 osób) i znajduje się w domenie publicznej, sugeruję poszukiwanie profesjonalnych alternatyw.

Czy SSL i https to jedno i to samo ...

Niezupełnie, ale idą w parze! SSL zapewnia, że ​​dane są szyfrowane i odszyfrowywane w obie strony podczas przeglądania witryny, httpsto identyfikator URI, który jest potrzebny do uzyskania dostępu do bezpiecznej witryny internetowej. Zauważysz, że podczas próby uzyskania dostępu http://secure.mydomain.comwyświetla komunikat o błędzie.

Czy muszę się z kimś ubiegać, aby uzyskać licencję czy coś.

Nie musisz uzyskiwać licencji, a raczej certyfikat. Możesz przyjrzeć się firmom oferującym profesjonalne usługi z zabezpieczaniem stron internetowych, na przykład VeriSign .

Czy muszę zabezpieczyć wszystkie moje strony, czy tylko stronę logowania ...

Gdy Twój certyfikat zostanie włączony dla mydomain.comkażdej strony, która podlega, *.mydomain.combędzie zabezpieczona.

Anthony Forloney
źródło
1

Czy muszę zabezpieczyć wszystkie moje strony, czy tylko stronę logowania ...

Po prostu zachowaj stronę logowania pod https

Dzięki temu przeglądanie innych stron nie będzie obciążone. Warunkiem jest podanie prawidłowych ustawień uwierzytelniania w konfiguracji sieciowej. Ma to na celu zapewnienie, że niezalogowani użytkownicy nie będą mogli przeglądać stron wymagających uwierzytelnienia.

balalakshmi
źródło
3
Udostępnianie tylko części witryny w protokole TLS jest niebezpieczne. Aktywny atakujący może używać SSLStrip i mieć dostęp do rzekomo chronionych stron.
Tobu,
1

@balalakshmi wspomniał o prawidłowych ustawieniach uwierzytelniania. Uwierzytelnianie to tylko połowa problemu, druga połowa to autoryzacja.

Jeśli używasz uwierzytelniania za pomocą formularzy i standardowych formantów, na przykład <asp:Login>musisz wykonać kilka czynności, aby mieć pewność, że tylko uwierzytelnieni użytkownicy mają dostęp do zabezpieczonych stron.

W web.config, w <system.web>sekcji musisz domyślnie wyłączyć dostęp anonimowy:

<authorization>
 <deny users="?" />
</authorization>

Wszelkie strony, do których będzie uzyskiwany dostęp anonimowo (takie jak sama strona Login.aspx), będą musiały mieć nadpisanie, które ponownie zezwala na dostęp anonimowy. Wymaga to <location>element, i musi być umieszczony na <configuration>poziomie ( na zewnątrz w <system.web>przekroju), w następujący sposób:

<!-- Anonymous files -->
<location path="Login.aspx">
 <system.web>
  <authorization>
   <allow users="*" />
  </authorization>
 </system.web>
</location>

Pamiętaj, że musisz również zezwolić na anonimowy dostęp do wszystkich arkuszy stylów lub skryptów używanych na anonimowych stronach:

<!-- Anonymous folders -->
<location path="styles">
 <system.web>
  <authorization>
   <allow users="*" />
  </authorization>
 </system.web>
</location>

Należy pamiętać, że pathatrybut lokalizacji jest powiązany z web.configfolderem i nie może mieć ~/prefiksu, w przeciwieństwie do większości innych atrybutów konfiguracji typu ścieżki.

devstuff
źródło
-2

Spróbuj utworzyć katalog rozruchowy w PHP, jak w

<?PHP
$ip = $_SERVER['REMOTE_ADDR'];
$privacy = ['BOOTSTRAP_CONFIG'];
$shell   = ['BOOTSTRAP_OUTPUT'];
enter code here
if $ip == $privacy {
function $privacy int $ip = "https://";
} endif {
echo $shell
}
?>

To głównie to!

Ce0ns
źródło
3
To właściwie nie odpowiada na pytanie
Andreas