Il termine "modello di progettazione della sicurezza" di solito significa una pratica di progettazione che, se applicata correttamente, garantisce che una proprietà di sicurezza sia valida. Ad esempio, il marchio :
A Trademark in computer security is a contract between code that verifies security properties of an object and code that requires that an object have certain security properties. As such it is useful in ensuring secure information flow. In object-oriented languages, trademarking is analogous to signing of data but can often be implemented without cryptography.
Quindi uno sviluppatore può marcare un oggetto e usare il nascondiglio delle informazioni per assicurarsi che altri moduli non possano falsificare il marchio. Quindi un cliente può essere sicuro che la presenza del marchio (a volte semplice come instanceof
) implica che la proprietà sia valida al runtime.
Ad esempio, l'output di un disinfettante HTML e un modello HTML che disinfetta tutti gli input potrebbero essere marchi registrati come HTML sicuro. Il codice downstream potrebbe controllare il marchio per distinguere tra il contenuto che deve ancora essere trattato con sospetto da quello che è originato all'interno del sistema o che è stato filtrato all'ingresso nel dominio di sicurezza.
Al contrario, una linea guida per la codifica potrebbe essere
When you need to verify that a security property, like well-formedness or provenance, holds, either use one of the validator libraries written by our security engineers, or check that the input has a trademark so that you know the property was checked upstream.
Il modello spiega come progettare un oggetto o un modulo con determinate proprietà di sicurezza e le linee guida indicano i client che richiedono quella proprietà in modo da mantenerla nel loro codice.
I pattern spiegano la relazione tra invarianti e decisioni di progettazione / API, mentre le linee guida stabiliscono quali pratiche usare e amp; quando gli sviluppatori possono coordinare efficacemente il proprio lavoro.
Quando si lavora in un linguaggio orientato agli oggetti con una scarsa informazione, il marchio di un oggetto è più duro, quindi una linea guida per la codifica potrebbe essere
Don't forge trademarks or the secure kernel team will hunt you down.
che non difende l'uso di un modello di progettazione sicuro, ma quando viene seguito migliora la sicurezza del sistema prevenendo gli abusi delle funzionalità linguistiche che violano i contratti di sicurezza.