All of these ideas that people list (isolation, least privilege, white list) are tools.
But first you need to know what “security” means for your application. Often this means something like
- Availability The program will not be able to serve one client because another client sent bad data.
- Confidentiality The program will not pass one user data to another user.
- Isolation . The program will not interact with data that the user did not intend to use.
- Review The program, obviously, functions correctly - the desired property of the vote counter.
- Safe Way : The user knows which entity they are interacting with.
Once you know what security means for your application, you can start developing around this.
One design practice, which is not mentioned as often as it is, is the facility .
Many secure systems must make authorization decisions - if this piece of code can access this file or open a socket for this machine.
Access control lists - one way to do this is to specify files that can be accessed. However, such systems require significant maintenance costs. They work in security agencies where people have permissions, and they work in databases, where a company deploys a database, hires a DBA. But they do not work well for secure end-user software, as the user often has neither the skills nor the inclination to constantly update lists.
The capabilities of the object solve this problem by making decisions about access to copying via object links - using all the work that programmers already do in well-designed object-oriented systems to minimize the amount of authority that any single piece of code has. See CapDesk for an example of how this works in practice.
DARPA conducted an experiment to develop secure systems called the DARPA Browser project, which found that a system designed in this way, although it had the same error rate as other object-oriented systems, had a much lower vulnerability to exploit . Since designers followed POLA using the capabilities of the object, it was much harder for attackers to find a way to use the error to compromise the system.
Mike samuel
source share