A web platform wrote in PHP for developing websites, web portals and system interfaces.
StoneHilt is the starting point in making your unique web experience>
StoneHilt was engineered to be a security platform, first and foremost. Flexibility, scalability and the general user experience was then integrated to make a robust web platform.
Security starts with the system architecture and continues through to the developer's mindset.
- Complete Database Access Layer
- Input Access Layer
- Skinning Layer with Output Validation
- User permissions via Access Control Lists
- File System Management Layer
- Independent Environments per Extension
- Integrated RESTful API
Database Access Layer
SQL Injection is a serious security risk to any system which accepts user input.
The Database Access Layer controls all access to the database, and the creation of all queries, forcing every query to correctly escaped.
A single database access point also allows for scaling the database among multiple servers and integrating a load balancer.
Input Access Layer
A single system object manages all user input, from URL parsing to sanitizing POST values to filtering file uploads.
Upon startup, all user data is forced into the input access layer, preventing extensions from bypassing these filters.
All HTML output is created dynamically via the Skinning Layer, enforcing well formed elements, and limiting the opportunities for sending malware to visitors.
Skins use theme methodology to dynamically create HTML attributes and load CSS, allowing for on-the-fly changes to HTML with little change to the content creator.
The central permission control mechanism allows for extensions to set access controls as finely as deemed necessary.
Administrators then assign users to one or more user groups and grant permissions on a per user group basis.
File System Management
All access to server files runs through a central file management object, controlling access to sensitive files and directories.
Various file types have different associated helper objects which facilitiate quick processing of common files, like CSV and ZIP files.
Independent Environments per Extension
Extensions can create their own mini-environments within the larger system, allowing for complete, independent control of the user experience.
This allows extensions to create unique functionality for users once they log in and based upon their user group.
Think: Customers and Staff getting different dashboards upon logging in through the same link.
Integrated RESTful API
A simple RESTful api interface is integrated into core to provide a method for other systems to communicate with StoneHilt.
Everything from AJAX calls from the browser to file access to mobile apps access StoneHilt through the RESTful APIs.
Extensions can dynamically create the api end points and control access through required user permissions.