diff options
author | VirtualTam <virtualtam@flibidi.net> | 2015-08-04 16:07:13 +0200 |
---|---|---|
committer | VirtualTam <virtualtam@flibidi.net> | 2015-08-04 16:07:13 +0200 |
commit | 27cf2e671d1f35bd8c9383d008cd3733fc1c6e0d (patch) | |
tree | 4726baf18e7057eac3f9b6bdb5991fe6117814fc /doc/Security.html | |
parent | 96db105e4c0833324f7168edb5673278de8ccd54 (diff) | |
parent | 992af0b9d77cb4fbac2c37ef8d5896042d67a2a3 (diff) | |
download | Shaarli-27cf2e671d1f35bd8c9383d008cd3733fc1c6e0d.tar.gz Shaarli-27cf2e671d1f35bd8c9383d008cd3733fc1c6e0d.tar.zst Shaarli-27cf2e671d1f35bd8c9383d008cd3733fc1c6e0d.zip |
Merge pull request #294 from virtualtam/doc/update
Doc: sync from Wiki, generate HTML
Diffstat (limited to 'doc/Security.html')
-rw-r--r-- | doc/Security.html | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/doc/Security.html b/doc/Security.html new file mode 100644 index 00000000..1fbbabde --- /dev/null +++ b/doc/Security.html | |||
@@ -0,0 +1,107 @@ | |||
1 | <!DOCTYPE html> | ||
2 | <html> | ||
3 | <head> | ||
4 | <meta charset="utf-8"> | ||
5 | <meta name="generator" content="pandoc"> | ||
6 | <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> | ||
7 | <title>Shaarli - Security</title> | ||
8 | <style type="text/css">code{white-space: pre;}</style> | ||
9 | <!--[if lt IE 9]> | ||
10 | <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> | ||
11 | <![endif]--> | ||
12 | <style type="text/css"> | ||
13 | table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode { | ||
14 | margin: 0; padding: 0; vertical-align: baseline; border: none; } | ||
15 | table.sourceCode { width: 100%; line-height: 100%; } | ||
16 | td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; } | ||
17 | td.sourceCode { padding-left: 5px; } | ||
18 | code > span.kw { color: #007020; font-weight: bold; } | ||
19 | code > span.dt { color: #902000; } | ||
20 | code > span.dv { color: #40a070; } | ||
21 | code > span.bn { color: #40a070; } | ||
22 | code > span.fl { color: #40a070; } | ||
23 | code > span.ch { color: #4070a0; } | ||
24 | code > span.st { color: #4070a0; } | ||
25 | code > span.co { color: #60a0b0; font-style: italic; } | ||
26 | code > span.ot { color: #007020; } | ||
27 | code > span.al { color: #ff0000; font-weight: bold; } | ||
28 | code > span.fu { color: #06287e; } | ||
29 | code > span.er { color: #ff0000; font-weight: bold; } | ||
30 | </style> | ||
31 | <link rel="stylesheet" href="github-markdown.css"> | ||
32 | </head> | ||
33 | <body> | ||
34 | <div id="local-sidebar"> | ||
35 | <ul> | ||
36 | <li><a href="Home.html">Home</a></li> | ||
37 | <li>Installation | ||
38 | <ul> | ||
39 | <li><a href="Server-requirements.html">Server requirements</a></li> | ||
40 | <li><a href="Server-configuration.html">Server configuration</a></li> | ||
41 | <li><a href="Shaarli-configuration.html">Shaarli configuration</a></li> | ||
42 | </ul></li> | ||
43 | <li><a href="Usage.html">Usage</a> | ||
44 | <ul> | ||
45 | <li><a href="Sharing-button.html">Sharing button</a> (bookmarklet)</li> | ||
46 | <li><a href="Firefox-share.html">Firefox share</a></li> | ||
47 | <li><a href="RSS-feeds.html">RSS feeds</a></li> | ||
48 | </ul></li> | ||
49 | <li>How To | ||
50 | <ul> | ||
51 | <li><a href="Backup,-restore,-import-and-export.html">Backup, restore, import and export</a></li> | ||
52 | <li><a href="Copy-an-existing-installation-over-SSH-and-serve-it-locally.html">Copy an existing installation over SSH and serve it locally</a></li> | ||
53 | <li><a href="Download-CSS-styles-from-an-OPML-list.html">Download CSS styles from an OPML list</a></li> | ||
54 | </ul></li> | ||
55 | <li><a href="Troubleshooting.html">Troubleshooting</a></li> | ||
56 | <li><a href="Development.html">Development</a> | ||
57 | <ul> | ||
58 | <li><a href="GnuPG-signature.html">GnuPG signature</a></li> | ||
59 | <li><a href="Coding-guidelines.html">Coding guidelines</a></li> | ||
60 | <li><a href="Directory-structure.html">Directory structure</a></li> | ||
61 | <li><a href="3rd-party-libraries.html">3rd party libraries</a></li> | ||
62 | <li><a href="Plugin-System.html">Plugin System</a></li> | ||
63 | <li><a href="Security.html">Security</a></li> | ||
64 | <li><a href="Static-analysis.html">Static analysis</a></li> | ||
65 | <li><a href="Theming.html">Theming</a></li> | ||
66 | <li><a href="Unit-tests.html">Unit tests</a></li> | ||
67 | </ul></li> | ||
68 | <li>About | ||
69 | <ul> | ||
70 | <li><a href="FAQ.html">FAQ</a></li> | ||
71 | <li><a href="Community-&-Related-software.html">Community & Related software</a></li> | ||
72 | <li><a href="TODO.html">TODO</a></li> | ||
73 | </ul></li> | ||
74 | </ul> | ||
75 | </div> | ||
76 | <h1 id="security">Security</h1> | ||
77 | <h2 id="client-browser">Client browser</h2> | ||
78 | <ul> | ||
79 | <li>Shaarli relies on <code>HTTP_REFERER</code> for some functions (like redirects and clicking on tags). If you have disabled or masqueraded <code>HTTP_REFERER</code> in your browser, some features of Shaarli may not work</li> | ||
80 | </ul> | ||
81 | <h2 id="php">PHP</h2> | ||
82 | <ul> | ||
83 | <li><code>magic_quotes</code> is an horrible option of PHP which is often activated on servers. No serious developer should rely on this horror to secure their code against SQL injections. You should disable it (and Shaarli expects this option to be disabled). Nevertheless, I have added code to cope with <code>magic_quotes</code> on, so you should not be bothered even on crappy hosts.</li> | ||
84 | </ul> | ||
85 | <h2 id="server-and-sessions">Server and sessions</h2> | ||
86 | <ul> | ||
87 | <li>Directories are protected using <code>.htaccess</code> files</li> | ||
88 | <li>Forms are protected against XSRF (Cross-site requests forgery):</li> | ||
89 | <li>Forms which act on data (save,deleteā¦) contain a token generated by the server.</li> | ||
90 | <li>Any posted form which does not contain a valid token is rejected.</li> | ||
91 | <li>Any token can only be used once.</li> | ||
92 | <li>Tokens are attached to the session and cannot be reused in another session.</li> | ||
93 | <li>Sessions automatically expire after 60 minutes.</li> | ||
94 | <li>Sessions are protected against hijacking: the session ID cannot be used from a different IP address.</li> | ||
95 | </ul> | ||
96 | <h2 id="shaarli-datastore-and-configuration">Shaarli datastore and configuration</h2> | ||
97 | <ul> | ||
98 | <li>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.</li> | ||
99 | <li>Links are stored as an associative array which is serialized, compressed (with deflate), base64-encoded and saved as a comment in a <code>.php</code> file.</li> | ||
100 | <li>Even if the server does not support <code>.htaccess</code> files, the data file will still not be readable by URL.</li> | ||
101 | <li><p>The database looks like this:</p> | ||
102 | <pre class="sourceCode php"><code class="sourceCode php"><span class="kw"><?php</span> <span class="co">/* zP1ZjxxJtiYIvvevEPJ2lDOaLrZv7o...</span> | ||
103 | <span class="co">...ka7gaco/Z+TFXM2i7BlfMf8qxpaSSYfKlvqv/x8= */</span> <span class="kw">?></span></code></pre></li> | ||
104 | <li><p>Small hashes are used to make a link to an entry in Shaarli. They are unique. In fact, the date of the items (eg. <code>20110923_150523</code>) is hashed with CRC32, then converted to base64 and some characters are replaced. They are always 6 characters longs and use only <code>A-Z a-z 0-9 - _</code> and <code>@</code>.</p></li> | ||
105 | </ul> | ||
106 | </body> | ||
107 | </html> | ||