94c035ff71
- removed all references to magic quotes - magic quotes are not supported on PHP >= 5.4 (https://secure.php.net/manual/en/security.magicquotes.php) - Shaarli does not support PHP < 5.5
25 lines
1.8 KiB
Markdown
25 lines
1.8 KiB
Markdown
## Client browser
|
|
- Shaarli relies on `HTTP_REFERER` for some functions (like redirects and clicking on tags). If you have disabled or masqueraded `HTTP_REFERER` in your browser, some features of Shaarli may not work
|
|
|
|
## Server and sessions
|
|
- Directories are protected using `.htaccess` files
|
|
- Forms are protected against XSRF (Cross-site requests forgery):
|
|
- Forms which act on data (save,delete…) contain a token generated by the server.
|
|
- Any posted form which does not contain a valid token is rejected.
|
|
- Any token can only be used once.
|
|
- Tokens are attached to the session and cannot be reused in another session.
|
|
- Sessions automatically expire after 60 minutes.
|
|
- Sessions are protected against hijacking: the session ID cannot be used from a different IP address.
|
|
|
|
## Shaarli datastore and configuration
|
|
- The password is salted, hashed and stored in the data subdirectory, in a PHP file, and protected by htaccess. Even if the webserver does not support htaccess, the hash is not readable by URL. Even if the .php file is stolen, the password cannot deduced from the hash. The salt prevents rainbow-tables attacks.
|
|
- Links are stored as an associative array which is serialized, compressed (with deflate), base64-encoded and saved as a comment in a `.php` file.
|
|
- Even if the server does not support `.htaccess` files, the data file will still not be readable by URL.
|
|
- The database looks like this:
|
|
|
|
```php
|
|
<?php /* zP1ZjxxJtiYIvvevEPJ2lDOaLrZv7o...
|
|
...ka7gaco/Z+TFXM2i7BlfMf8qxpaSSYfKlvqv/x8= */ ?>
|
|
```
|
|
|
|
- Small hashes are used to make a link to an entry in Shaarli. They are unique. In fact, the date of the items (eg. `20110923_150523`) is hashed with CRC32, then converted to base64 and some characters are replaced. They are always 6 characters longs and use only `A-Z a-z 0-9 - _` and `@`.
|