|
@@ -23,14 +23,14 @@ discard block |
|
|
block discarded – undo |
|
23
|
23
|
* var_isbot=1 peut etre utilise pour monitorer la disponibilite pour les bots (sujets a 503 de delestage si |
|
24
|
24
|
* le load depasse ECRAN_SECURITE_LOAD) |
|
25
|
25
|
*/ |
|
26
|
|
-if (!defined('_IS_BOT') and isset($_GET['var_isbot'])){ |
|
|
26
|
+if (!defined('_IS_BOT') and isset($_GET['var_isbot'])) { |
|
27
|
27
|
define('_IS_BOT', $_GET['var_isbot'] ? true : false); |
|
28
|
28
|
} |
|
29
|
29
|
|
|
30
|
30
|
/* |
|
31
|
31
|
* Détecteur de robot d'indexation |
|
32
|
32
|
*/ |
|
33
|
|
-if (!defined('_IS_BOT')){ |
|
|
33
|
+if (!defined('_IS_BOT')) { |
|
34
|
34
|
define('_IS_BOT', |
|
35
|
35
|
isset($_SERVER['HTTP_USER_AGENT']) |
|
36
|
36
|
and preg_match( |
|
@@ -40,16 +40,16 @@ discard block |
|
|
block discarded – undo |
|
40
|
40
|
. 'MSIE 6\.0|' |
|
41
|
41
|
// UA plus cibles |
|
42
|
42
|
. '200please|80legs|a6-indexer|aboundex|accoona|addthis|adressendeutschland|alexa|altavista|analyticsseo|archive|aspseek|baidu|begunadvertising|bingpreview|bloglines|browsershots|bubing|butterfly|changedetection|charlotte|chilkat|china|coccoc|crowsnest|dataminr|daumoa|dlweb|ec2linkfinder|estyle|ezooms|facebookexternalhit|facebookplatform|fairshare|feedfetcher|feedfetcher-google|feedly|fetch|flipboardproxy|genieo|google|grapeshot|hatena-useragent|head|hosttracker|hubspot|ia_archiver|ichiro|iltrovatore-setaccio|immediatenet|ina|infegyatlas|infohelfer|instapaper|jabse|james|kumkie|linkdex|linkfluence|linkwalker|litefinder|loadimpactpageanalyzer|luminate|lycos|lycosa|mediapartners-google|msai|najdi|netcraftsurveyagent|netestate|netseer|nuhk|panscient|parsijoo|plukkie|proximic|qirina|qualidator|rambler|readability|sbsearch|scooter|scrapy|scrubby|scrubbybloglines|shareaholic|shopwiki|sistrix|sitechecker|siteexplorer|sogou|special_archiver|speedy|spinn3r|spreadtrum|steeler|subscriber|suma|superdownloads|svenska-webbsido|teoma|thumbshots|tineye|trendiction|tweetedtimes|tweetmeme|uaslinkchecker|undrip|unwindfetchor|vedma|vkshare|vm|wch|webalta|webcookies|webthumbnail|wesee|wise-guys|woko|wotbox|y!j-bri|y!j-bro|y!j-brw|y!j-bsc|yahoo|yahoo!|yahooysmcm|yats|yeti|zeerch|owlin' |
|
43
|
|
- . ',i', (string)$_SERVER['HTTP_USER_AGENT']) |
|
|
43
|
+ . ',i', (string) $_SERVER['HTTP_USER_AGENT']) |
|
44
|
44
|
); |
|
45
|
45
|
} |
|
46
|
|
-if (!defined('_IS_BOT_FRIEND')){ |
|
|
46
|
+if (!defined('_IS_BOT_FRIEND')) { |
|
47
|
47
|
define('_IS_BOT_FRIEND', |
|
48
|
48
|
isset($_SERVER['HTTP_USER_AGENT']) |
|
49
|
49
|
and preg_match(',' |
|
50
|
50
|
// UA plus cibles |
|
51
|
51
|
. 'facebookexternalhit' |
|
52
|
|
- . ',i', (string)$_SERVER['HTTP_USER_AGENT']) |
|
|
52
|
+ . ',i', (string) $_SERVER['HTTP_USER_AGENT']) |
|
53
|
53
|
); |
|
54
|
54
|
} |
|
55
|
55
|
|
|
@@ -63,15 +63,15 @@ discard block |
|
|
block discarded – undo |
|
63
|
63
|
foreach ($_GET as $var => $val) |
|
64
|
64
|
if ($_GET[$var] and strncmp($var, "id_", 3) == 0 |
|
65
|
65
|
and !in_array($var, array('id_table', 'id_base'))) |
|
66
|
|
- $_GET[$var] = is_array($_GET[$var])?@array_map('intval', $_GET[$var]):intval($_GET[$var]); |
|
|
66
|
+ $_GET[$var] = is_array($_GET[$var]) ? @array_map('intval', $_GET[$var]) : intval($_GET[$var]); |
|
67
|
67
|
foreach ($_POST as $var => $val) |
|
68
|
68
|
if ($_POST[$var] and strncmp($var, "id_", 3) == 0 |
|
69
|
69
|
and !in_array($var, array('id_table', 'id_base'))) |
|
70
|
|
- $_POST[$var] = is_array($_POST[$var])?@array_map('intval', $_POST[$var]):intval($_POST[$var]); |
|
|
70
|
+ $_POST[$var] = is_array($_POST[$var]) ? @array_map('intval', $_POST[$var]) : intval($_POST[$var]); |
|
71
|
71
|
foreach ($GLOBALS as $var => $val) |
|
72
|
72
|
if ($GLOBALS[$var] and strncmp($var, "id_", 3) == 0 |
|
73
|
73
|
and !in_array($var, array('id_table', 'id_base'))) |
|
74
|
|
- $GLOBALS[$var] = is_array($GLOBALS[$var])?@array_map('intval', $GLOBALS[$var]):intval($GLOBALS[$var]); |
|
|
74
|
+ $GLOBALS[$var] = is_array($GLOBALS[$var]) ? @array_map('intval', $GLOBALS[$var]) : intval($GLOBALS[$var]); |
|
75
|
75
|
|
|
76
|
76
|
/* |
|
77
|
77
|
* Interdit la variable $cjpeg_command, qui était utilisée sans |
|
@@ -82,18 +82,18 @@ discard block |
|
|
block discarded – undo |
|
82
|
82
|
/* |
|
83
|
83
|
* Contrôle de quelques variables (XSS) |
|
84
|
84
|
*/ |
|
85
|
|
-foreach(array('lang', 'var_recherche', 'aide', 'var_lang_r', 'lang_r', 'var_ajax_ancre', 'nom_fichier') as $var) { |
|
|
85
|
+foreach (array('lang', 'var_recherche', 'aide', 'var_lang_r', 'lang_r', 'var_ajax_ancre', 'nom_fichier') as $var) { |
|
86
|
86
|
if (isset($_GET[$var])) |
|
87
|
|
- $_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_GET[$var]); |
|
|
87
|
+ $_REQUEST[$var] = $GLOBALS[$var] = $_GET[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string) $_GET[$var]); |
|
88
|
88
|
if (isset($_POST[$var])) |
|
89
|
|
- $_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string)$_POST[$var]); |
|
|
89
|
+ $_REQUEST[$var] = $GLOBALS[$var] = $_POST[$var] = preg_replace(',[^\w\,/#&;-]+,', ' ', (string) $_POST[$var]); |
|
90
|
90
|
} |
|
91
|
91
|
|
|
92
|
92
|
/* |
|
93
|
93
|
* Filtre l'accès à spip_acces_doc (injection SQL en 1.8.2x) |
|
94
|
94
|
*/ |
|
95
|
|
-if (preg_match(',^(.*/)?spip_acces_doc\.,', (string)$_SERVER['REQUEST_URI'])) { |
|
96
|
|
- $file = addslashes((string)$_GET['file']); |
|
|
95
|
+if (preg_match(',^(.*/)?spip_acces_doc\.,', (string) $_SERVER['REQUEST_URI'])) { |
|
|
96
|
+ $file = addslashes((string) $_GET['file']); |
|
97
|
97
|
} |
|
98
|
98
|
|
|
99
|
99
|
/* |
|
@@ -108,28 +108,28 @@ discard block |
|
|
block discarded – undo |
|
108
|
108
|
* Agenda joue à l'injection php |
|
109
|
109
|
*/ |
|
110
|
110
|
if (isset($_REQUEST['partie_cal']) |
|
111
|
|
-and $_REQUEST['partie_cal'] !== htmlentities((string)$_REQUEST['partie_cal'])) |
|
|
111
|
+and $_REQUEST['partie_cal'] !== htmlentities((string) $_REQUEST['partie_cal'])) |
|
112
|
112
|
$ecran_securite_raison = "partie_cal"; |
|
113
|
113
|
if (isset($_REQUEST['echelle']) |
|
114
|
|
-and $_REQUEST['echelle'] !== htmlentities((string)$_REQUEST['echelle'])) |
|
|
114
|
+and $_REQUEST['echelle'] !== htmlentities((string) $_REQUEST['echelle'])) |
|
115
|
115
|
$ecran_securite_raison = "echelle"; |
|
116
|
116
|
|
|
117
|
117
|
/* |
|
118
|
118
|
* Espace privé |
|
119
|
119
|
*/ |
|
120
|
120
|
if (isset($_REQUEST['exec']) |
|
121
|
|
-and !preg_match(',^[\w-]+$,', (string)$_REQUEST['exec'])) |
|
|
121
|
+and !preg_match(',^[\w-]+$,', (string) $_REQUEST['exec'])) |
|
122
|
122
|
$ecran_securite_raison = "exec"; |
|
123
|
123
|
if (isset($_REQUEST['cherche_auteur']) |
|
124
|
|
-and preg_match(',[<],', (string)$_REQUEST['cherche_auteur'])) |
|
|
124
|
+and preg_match(',[<],', (string) $_REQUEST['cherche_auteur'])) |
|
125
|
125
|
$ecran_securite_raison = "cherche_auteur"; |
|
126
|
126
|
if (isset($_REQUEST['exec']) |
|
127
|
127
|
and $_REQUEST['exec'] == 'auteurs' |
|
128
|
|
-and preg_match(',[<],', (string)$_REQUEST['recherche'])) |
|
|
128
|
+and preg_match(',[<],', (string) $_REQUEST['recherche'])) |
|
129
|
129
|
$ecran_securite_raison = "recherche"; |
|
130
|
130
|
if (isset($_REQUEST['exec']) |
|
131
|
131
|
and $_REQUEST['exec'] == 'info_plugin' |
|
132
|
|
-and preg_match(',[<],', (string)$_REQUEST['plugin'])) |
|
|
132
|
+and preg_match(',[<],', (string) $_REQUEST['plugin'])) |
|
133
|
133
|
$ecran_securite_raison = "plugin"; |
|
134
|
134
|
if (isset($_REQUEST['exec']) |
|
135
|
135
|
and $_REQUEST['exec'] == 'puce_statut' |
|
@@ -142,7 +142,7 @@ discard block |
|
|
block discarded – undo |
|
142
|
142
|
or @file_exists('ecrire/inc_version.php')) { |
|
143
|
143
|
function action_configurer() { |
|
144
|
144
|
include_spip('inc/autoriser'); |
|
145
|
|
- if(!autoriser('configurer', _request('configuration'))) { |
|
|
145
|
+ if (!autoriser('configurer', _request('configuration'))) { |
|
146
|
146
|
include_spip('inc/minipres'); |
|
147
|
147
|
echo minipres(_T('info_acces_interdit')); |
|
148
|
148
|
exit; |
|
@@ -183,7 +183,7 @@ discard block |
|
|
block discarded – undo |
|
183
|
183
|
*/ |
|
184
|
184
|
if (_IS_BOT and ( |
|
185
|
185
|
(isset($_REQUEST['echelle']) and isset($_REQUEST['partie_cal']) and isset($_REQUEST['type'])) |
|
186
|
|
- or (strpos((string)$_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string)$_SERVER['REQUEST_URI'])) |
|
|
186
|
+ or (strpos((string) $_SERVER['REQUEST_URI'], 'debut_') and preg_match(',[?&]debut_.*&debut_,', (string) $_SERVER['REQUEST_URI'])) |
|
187
|
187
|
) |
|
188
|
188
|
) |
|
189
|
189
|
$ecran_securite_raison = "robot agenda/double pagination"; |
|
@@ -195,7 +195,7 @@ discard block |
|
|
block discarded – undo |
|
195
|
195
|
if (isset($_REQUEST['page'])) { |
|
196
|
196
|
if ($_REQUEST['page'] == 'test_cfg') |
|
197
|
197
|
$ecran_securite_raison = "test_cfg"; |
|
198
|
|
- if ($_REQUEST['page'] !== htmlspecialchars((string)$_REQUEST['page'])) |
|
|
198
|
+ if ($_REQUEST['page'] !== htmlspecialchars((string) $_REQUEST['page'])) |
|
199
|
199
|
$ecran_securite_raison = "xsspage"; |
|
200
|
200
|
if ($_REQUEST['page'] == '404' |
|
201
|
201
|
and isset($_REQUEST['erreur'])) |
|
@@ -233,12 +233,12 @@ discard block |
|
|
block discarded – undo |
|
233
|
233
|
/* |
|
234
|
234
|
* Outils XML mal sécurisés again |
|
235
|
235
|
*/ |
|
236
|
|
-if (isset($_REQUEST['var_url']) and $_REQUEST['var_url'] and isset($_REQUEST['exec']) and $_REQUEST['exec']=='valider_xml'){ |
|
|
236
|
+if (isset($_REQUEST['var_url']) and $_REQUEST['var_url'] and isset($_REQUEST['exec']) and $_REQUEST['exec'] == 'valider_xml') { |
|
237
|
237
|
$url = trim($_REQUEST['var_url']); |
|
238
|
|
- if (strncmp($url,'/',1)==0 |
|
239
|
|
- or (($p=strpos($url,'..'))!==false AND strpos($url,'..',$p+3)!==false) |
|
240
|
|
- or (($p=strpos($url,'..'))!==false AND strpos($url,'IMG',$p+3)!==false) |
|
241
|
|
- or (strpos($url,'://')!==false or strpos($url,':\\')!==false)) { |
|
|
238
|
+ if (strncmp($url, '/', 1) == 0 |
|
|
239
|
+ or (($p = strpos($url, '..')) !== false AND strpos($url, '..', $p + 3) !== false) |
|
|
240
|
+ or (($p = strpos($url, '..')) !== false AND strpos($url, 'IMG', $p + 3) !== false) |
|
|
241
|
+ or (strpos($url, '://') !== false or strpos($url, ':\\') !== false)) { |
|
242
|
242
|
$ecran_securite_raison = 'URL interdite pour var_url'; |
|
243
|
243
|
} |
|
244
|
244
|
} |
|
@@ -247,10 +247,10 @@ discard block |
|
|
block discarded – undo |
|
247
|
247
|
* Sauvegarde mal securisée < 2.0.9 |
|
248
|
248
|
*/ |
|
249
|
249
|
if (isset($_REQUEST['nom_sauvegarde']) |
|
250
|
|
-and strstr((string)$_REQUEST['nom_sauvegarde'], '/')) |
|
|
250
|
+and strstr((string) $_REQUEST['nom_sauvegarde'], '/')) |
|
251
|
251
|
$ecran_securite_raison = 'nom_sauvegarde manipulee'; |
|
252
|
252
|
if (isset($_REQUEST['znom_sauvegarde']) |
|
253
|
|
-and strstr((string)$_REQUEST['znom_sauvegarde'], '/')) |
|
|
253
|
+and strstr((string) $_REQUEST['znom_sauvegarde'], '/')) |
|
254
|
254
|
$ecran_securite_raison = 'znom_sauvegarde manipulee'; |
|
255
|
255
|
|
|
256
|
256
|
|
|
@@ -265,8 +265,8 @@ discard block |
|
|
block discarded – undo |
|
265
|
265
|
/* |
|
266
|
266
|
* Forms & Table ne se méfiait pas assez des uploads de fichiers |
|
267
|
267
|
*/ |
|
268
|
|
-if (count($_FILES)){ |
|
269
|
|
- foreach($_FILES as $k => $v){ |
|
|
268
|
+if (count($_FILES)) { |
|
|
269
|
+ foreach ($_FILES as $k => $v) { |
|
270
|
270
|
if (preg_match(',^fichier_\d+$,', $k) |
|
271
|
271
|
and preg_match(',\.php,i', $v['name'])) |
|
272
|
272
|
unset($_FILES[$k]); |
|
@@ -276,7 +276,7 @@ discard block |
|
|
block discarded – undo |
|
276
|
276
|
* et Contact trop laxiste avec une variable externe |
|
277
|
277
|
* on bloque pas le post pour eviter de perdre des donnees mais on unset la variable et c'est tout |
|
278
|
278
|
*/ |
|
279
|
|
-if (isset($_REQUEST['pj_enregistrees_nom']) and $_REQUEST['pj_enregistrees_nom']){ |
|
|
279
|
+if (isset($_REQUEST['pj_enregistrees_nom']) and $_REQUEST['pj_enregistrees_nom']) { |
|
280
|
280
|
unset($_REQUEST['pj_enregistrees_nom']); |
|
281
|
281
|
unset($_GET['pj_enregistrees_nom']); |
|
282
|
282
|
unset($_POST['pj_enregistrees_nom']); |
|
@@ -306,7 +306,7 @@ discard block |
|
|
block discarded – undo |
|
306
|
306
|
/* |
|
307
|
307
|
* Réinjection des clés en html dans l'admin r19561 |
|
308
|
308
|
*/ |
|
309
|
|
-if (strpos($_SERVER['REQUEST_URI'], "ecrire/") !== false){ |
|
|
309
|
+if (strpos($_SERVER['REQUEST_URI'], "ecrire/") !== false) { |
|
310
|
310
|
$zzzz = implode("", array_keys($_REQUEST)); |
|
311
|
311
|
if (strlen($zzzz) != strcspn($zzzz, '<>"\'')) |
|
312
|
312
|
$ecran_securite_raison = 'Cle incorrecte en $_REQUEST'; |