Funkcje zabezpieczeń w CRT
Wiele funkcji CRT stare mają wersje nowsze, bardziej bezpieczne.Jeśli istnieje funkcja bezpieczne, starsze, mniej bezpieczna wersja jest oznaczona jako przestarzałe i nowej wersji ma _s sufiksu ("bezpieczne").
W tym kontekście "niezalecane" oznacza że nie zaleca się używania funkcji; nie oznacza to, że funkcja jest zaplanowane do usunięcia z CRT.
Bezpieczne funkcje nie zapobiec lub poprawiania błędów zabezpieczeń; raczej one wychwytywanie błędów, gdy one wystąpią.Wykonują dodatkowe kontrole warunków błędów oraz o błędzie, one wywoływać funkcję obsługi błędów (zobacz Sprawdzanie poprawności parametru).
Na przykład strcpy funkcja nie ma sposobu informacją, jeśli ciąg, który jest on kopiowanie jest za duży dla jej bufor docelowy.Jednakże jego odpowiednika bezpiecznych, strcpy_s, ma rozmiar buforu jako parametr, dzięki czemu można określić, jeżeli przekroczenie buforu będzie występować.Jeśli korzystasz z strcpy_s do kopiowania znaków jedenaście do buforu ten znak, który jest błąd ze strony użytkownika; strcpy_snie można poprawić swoje pomyłkę, ale jej wykrycia błędu i poinformuje, wywołując obsługi nieprawidłowy parametr.
Rezygnowanie z ostrzeżeń dotyczących zaniechania
Aby zrezygnować z ostrzeżeń dotyczących zaniechania dla starszych, mniej bezpieczne funkcje na kilka sposobów.Najprostszym jest po prostu określenie _CRT_SECURE_NO_WARNINGS lub warning pragma.Albo spowoduje wyłączenie ostrzeżeń oczekiwany, ale oczywiście nadal występują problemy dotyczące zabezpieczeń, które spowodowały ostrzeżeń.Jest znacznie lepiej pozostawić oczekiwany Ostrzeżenia włączone i korzystać z nowych funkcji zabezpieczeń CRT.
W języku C++, najłatwiejszym sposobem pozwalającym ma używać Secure, szablon Overloads, który w wielu przypadkach będzie zrezygnować z ostrzeżeń dotyczących zaniechania przez zastąpienie wywołania zdeprecjonowanej funkcji wywołania do nowych wersji bezpiecznych tych funkcji.Na przykład, należy wziąć pod uwagę to przestarzałe wywołanie strcpy:
char szBuf[10];
strcpy(szBuf, "test"); // warning: deprecated
Definiowanie _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES jako 1 eliminuje ostrzeżenie, zmieniając strcpy wywołanie strcpy_s, który uniemożliwia przepełnienia bufora.Aby uzyskać więcej informacji, zobacz Secure, szablon Overloads.
Dla tych zdeprecjonowanej funkcji bez overloads secure, szablon należy rozważyć zdecydowanie, ręczne aktualizowanie kodu, aby użyć bezpiecznej wersji.
Innego źródła ostrzeżenia oczekiwany, niezwiązane z zabezpieczeniami, to funkcje POSIX.Zastąp nazwy funkcji POSIX ich odpowiedniki standardowe (na przykład zmienić dostępu do _access), lub wyłączanie ostrzeżeń związanych z POSIX oczekiwany przez definiowanie _CRT_NONSTDC_NO_WARNINGS.Aby uzyskać więcej informacji, zobacz Deprecated CRT Functions.
Dodatkowe funkcje zabezpieczeń
Funkcje zabezpieczeń między innymi następujące:
Parameter Validation.Poprawność parametrów przekazywanych do funkcji CRT, w obu funkcji bezpieczne i w wielu wersjach istniejące dotychczas funkcje.Poprawności tych należą:
Sprawdzanie NULL wartości przekazywane do funkcji.
Sprawdzanie, czy wyliczone wartości ważności.
Sprawdzanie, czy integralną wartości są prawidłowe zakresów.
Aby uzyskać więcej informacji, zobacz Sprawdzanie poprawności parametru.
Obsługi nieprawidłowe parametry jest również dostępne do autora.Nieprawidłowy parametr, zamiast potwierdzające i zamykania aplikacji, wystąpią CRT zapewnia sposobem sprawdzenia tych problemów z _set_invalid_parameter_handler funkcji.
Sized Buffers.Bezpieczne funkcje wymagają, że rozmiar buforu przekazywane do funkcji, które zapisuje do bufora.Bezpiecznych wersji sprawdzić, czy bufor jest wystarczająco duży, przed ich zapisaniem, pomaga uniknąć błędów przepełnienia buforu niebezpiecznych, które umożliwia wykonywanie złośliwego kodu.Te funkcje zwykle zwracają errno wpisz kod błędu i invoke handler nieprawidłowy parametr, jeśli rozmiar buforu jest za mały.Funkcje, które odczytu z buforów wejściowe, takie jak gets, bezpiecznej wersji, wymagających określ rozmiar maksymalny.
Null termination.Niektóre funkcje, które lewej ciągi znaków, które są potencjalnie nie zakończone mają bezpiecznych wersji, które zapewniają, że ciągi są poprawnie null zakończona.
Enhanced error reporting.Bezpieczne funkcje zwracają kodów błędów, więcej informacji o błędzie, niż dostępny był z służącymi.Funkcje bezpieczne i wiele służącymi teraz ustawić errno i często zwraca errno kod typu, jak również, aby zapewnić lepsze raportowanie błędów.
Filesystem security.Bezpieczny dostęp do plików bezpiecznej obsługi API we/wy w przypadku domyślnego pliku.
Windows security.Proces bezpiecznego API wymuszania zasad zabezpieczeń i pozwolić listy ACL, które zostaną określone.
Format string syntax checking.Nieprawidłowe ciągi są wykrywane, na przykład przy użyciu niepoprawnego typu pola znaków w printf format ciągów.