Piszę klienta dla mojego webapplication i podpisałem zwalniającą słoik z moim certyfikat programisty, jak mogę sprawdzić, czy wniosek do odpoczynku obsługa była z mojego podpisanej słoika?Sprawdź żądania HTTP z podpisanym słoiku
7
A
Odpowiedz
6
Nie możesz. Podpisywanie służy do sprawdzania poprawności wykonania, co oznacza, że znajduje się po stronie serwera. Ale chcesz sprawdzić podpis na żądanie http/reszta po stronie klienta. Strona klienta nie ma takiego sprawdzania poprawności.
Możesz dodać coś do samej odpowiedzi i potwierdzić ją po stronie klienta, ale znowu nic nie przeszkadza, aby jakikolwiek inny serwer wysłał tę samą wartość, a więc udawał, że jest twoim serwerem.
Można również dodać pewne cechy zachowania do słoika (jak pliki cookie sesji), ale znowu nic nie uniemożliwia innym słoiki naśladować to też.
Nie możesz. Każda osoba posiadająca podpisany słój może ją zdemontować, a zatem dowiedzieć się, jak podrobić takie wnioski. Możesz utrudnić to za pomocą statycznego lub dynamicznego zaciemniania, ale to tylko nieznacznie podnosi przeszkodę. Jeśli z drugiej strony próbujesz bronić się przed atakującymi bez dostępu do twojego słoika, ten słoik może zawierać klucz prywatny, który będzie używany do podpisywania żądań usługi odpoczynku. – mkl
Jaki jest podstawowy problem, który próbujesz rozwiązać? Jeśli edytujesz swoje pytanie, aby je uwzględnić, możemy zaproponować alternatywne rozwiązanie. – merlin2011
@mkl ma rację. Każda usługa publicznie dostępna i którą ktoś może zdobyć dla klienta, może zostać poddana inżynierii odwrotnej, a wraz z klientem nie ma sposobu, aby uniemożliwić komuś znalezienie klucza prywatnego lub innego mechanizmu tajnego przechowywania. Ogólnie staraj się nie martwić zbytnio o to, co * aplikacja * wysyła zapytania do Twojej usługi; martwić się o to, co wysyła * użytkownik *. Jeśli jestem zalogowany i uwierzytelniony, nie powinno to mieć znaczenia, jeśli użyję Twojego klienta lub telnetu. –