Handle di contesto rigoroso e di tipo rigoroso
Usare l'attributo strict_context_handle per tutti gli handle di contesto. Per impostazione predefinita, un handle di contesto non è associato a un'interfaccia, il che significa che un handle di contesto può essere creato in un'interfaccia, quindi passato a un altro. Si tratta di un attacco semplice e molti server RPC non riescono a prevenirlo.
Se due interfacce coesistono nello stesso processo, un utente malintenzionato può aprire un handle di contesto su un'interfaccia e passarlo a un altro, che può eseguire il trip sui dati imprevisti. Molti sviluppatori ritengono che il loro software sia l'unica interfaccia in un processo, ma molto spesso non è il caso, perché sia il sistema che molti componenti di terze parti usano RPC internamente e tali interfacce possono creare handle di contesto. Quando viene usato l'attributo strict_context_handle , il tempo di esecuzione RPC garantisce che un contesto creato in un'interfaccia possa essere passato come argomento solo ai metodi di tale interfaccia.
In situazioni in cui viene sviluppata un'applicazione per Windows Vista, l'uso di type_strict_context_handle è disponibile e consigliato. Gli handle di contesto non sono associati a un tipo specifico per impostazione predefinita. Quando nello stesso processo vengono usati più tipi di handle di contesto, è possibile che un client malintenzionato passi un handle di contesto al posto di un altro per produrre risultati indesiderati. L'uso di type_strict_context_handle consente alle applicazioni di applicare la coerenza dei tipi di handle di contesto e impedire l'utilizzo di tipi di handle del contesto non corrispondenti.