summaryrefslogtreecommitdiff
path: root/suhosin.ini
diff options
context:
space:
mode:
authorBen Fuhrmannek2014-07-07 17:01:03 +0200
committerBen Fuhrmannek2014-07-07 17:01:03 +0200
commit940509ed02db713920612b0994a57d6227c3655c (patch)
tree9fa9e45c8e0324b2a099b8475f6f9b1bb9f82a34 /suhosin.ini
parentf3efcde454d85cdf4b6ddafa05afe99cea5cfd78 (diff)
brand new default suhosin.ini with documentation and correct default values
Diffstat (limited to 'suhosin.ini')
-rw-r--r--suhosin.ini1363
1 files changed, 1138 insertions, 225 deletions
diff --git a/suhosin.ini b/suhosin.ini
index ce8e8e9..9d0bc23 100644
--- a/suhosin.ini
+++ b/suhosin.ini
@@ -1,467 +1,1380 @@
1extension = suhosin.so 1; =====================
2 2; Logging Configuration
3; ----------------------------------------------------------------------------- 3; =====================
4; This file was taken from Mandriva Linux with their permission
5; -----------------------------------------------------------------------------
6
7[suhosin]
8
9; -----------------------------------------------------------------------------
10; Logging Options
11 4
5; suhosin.log.syslog
6; ------------------
7; * Type: Integer
8; * Default: S_ALL & ~S_SQL
9;
12; Defines what classes of security alerts are logged to the syslog daemon. 10; Defines what classes of security alerts are logged to the syslog daemon.
13; Logging of errors of the class S_MEMORY are always logged to syslog, no 11; Logging of errors of the class S_MEMORY are always logged to syslog, no matter
14; matter what this configuration says, because a corrupted heap could mean that 12; what this configuration says, because a corrupted heap could mean that the
15; the other logging options will malfunction during the logging process. 13; other logging options will malfunction during the logging process.
16;suhosin.log.syslog = 14;
15; Keep in mind that using the constants is only supported when the Suhosin-Patch
16; is used.
17;
18; +------------+-----------+----------------------------------------------------+
19; | Constant | Value | Description |
20; +============+===========+====================================================+
21; | S_MEMORY | 1 | All canary violations and the safe unlink |
22; | | | protection use this class |
23; +------------+-----------+----------------------------------------------------+
24; | S_MISC | 2 | All log messages (f.e. format string protection) |
25; | | | that do not fit in other classes use this class |
26; +------------+-----------+----------------------------------------------------+
27; | S_VARS | 4 | All variable filters trigger this class |
28; +------------+-----------+----------------------------------------------------+
29; | S_FILES | 8 | All violations triggered by the uploaded files |
30; | | | filter use this class |
31; +------------+-----------+----------------------------------------------------+
32; | S_INCLUDE | 16 | The protection against malicious include filenames |
33; | | | use this class |
34; +------------+-----------+----------------------------------------------------+
35; | S_SQL | 32 | Failed SQL queries are logged with this class |
36; | | | (not yet supported in Suhosin BETA) |
37; +------------+-----------+----------------------------------------------------+
38; | S_EXECUTOR | 64 | The execution depth protection uses this logging |
39; | | | class |
40; +------------+-----------+----------------------------------------------------+
41; | S_MAIL | 128 | The mail() header newline protection uses this |
42; | | | logging class |
43; +------------+-----------+----------------------------------------------------+
44; | S_SESSION | 256 | The transparent session protection uses this |
45; | | | logging class |
46; +------------+-----------+----------------------------------------------------+
47; | S_ALL | 511 | Combines all classes |
48; +------------+-----------+----------------------------------------------------+
49;
50;suhosin.log.syslog = S_ALL & ~S_SQL
51;
17 52
53; suhosin.log.syslog.facility
54; ---------------------------
55; * Type: Integer
56; * Default: LOG_USER
57;
18; Defines the syslog facility that is used when ALERTs are logged to syslog. 58; Defines the syslog facility that is used when ALERTs are logged to syslog.
19;suhosin.log.syslog.facility = 59; Depending on your system type (syslogd) the following facilities are available.
60; Please check your system's include header if the values are the same for your
61; syslogd.
62;
63; +--------------+-------+
64; | Constant | Value |
65; +==============+=======+
66; | LOG_KERN | 8 |
67; +--------------+-------+
68; | LOG_USER | 9 |
69; +--------------+-------+
70; | LOG_MAIL | 10 |
71; +--------------+-------+
72; | LOG_DAEMON | 11 |
73; +--------------+-------+
74; | LOG_AUTH | 12 |
75; +--------------+-------+
76; | LOG_SYSLOG | 13 |
77; +--------------+-------+
78; | LOG_LPR | 14 |
79; +--------------+-------+
80; | LOG_NEWS | 15 |
81; +--------------+-------+
82; | LOG_UUCP | 16 |
83; +--------------+-------+
84; | LOG_CRON | 17 |
85; +--------------+-------+
86; | LOG_AUTHPRIV | 18 |
87; +--------------+-------+
88; | LOG_LOCAL0 | 24 |
89; +--------------+-------+
90; | LOG_LOCAL1 | 25 |
91; +--------------+-------+
92; | LOG_LOCAL2 | 26 |
93; +--------------+-------+
94; | LOG_LOCAL3 | 27 |
95; +--------------+-------+
96; | LOG_LOCAL4 | 28 |
97; +--------------+-------+
98; | LOG_LOCAL5 | 29 |
99; +--------------+-------+
100; | LOG_LOCAL6 | 30 |
101; +--------------+-------+
102; | LOG_LOCAL7 | 31 |
103; +--------------+-------+
104;
105;suhosin.log.syslog.facility = LOG_USER
106;
20 107
108; suhosin.log.syslog.priority
109; ---------------------------
110; * Type: Integer
111; * Default: LOG_ALERT
112;
21; Defines the syslog priority that is used when ALERTs are logged to syslog. 113; Defines the syslog priority that is used when ALERTs are logged to syslog.
22;suhosin.log.syslog.priority = 114; Depending on your system type (syslogd) the following priorities are available.
115; Please check your system's include header if the values are the same for your
116; syslogd.
117;
118; +------------+-------+
119; |Constant | Value |
120; +============+=======+
121; |LOG_EMERG | 0 |
122; +------------+-------+
123; |LOG_ALERT | 1 |
124; +------------+-------+
125; |LOG_CRIT | 2 |
126; +------------+-------+
127; |LOG_WARNING | 3 |
128; +------------+-------+
129; |LOG_NOTICE | 4 |
130; +------------+-------+
131; |LOG_INFO | 5 |
132; +------------+-------+
133; |LOG_DEBUG | 6 |
134; +------------+-------+
135; |LOG_ERR | 7 |
136; +------------+-------+
137;
138;suhosin.log.syslog.priority = LOG_ALERT
139;
23 140
141; suhosin.log.sapi
142; ----------------
143; * Type: Integer
144; * Default: S_ALL & ~S_SQL
145;
24; Defines what classes of security alerts are logged through the SAPI error log. 146; Defines what classes of security alerts are logged through the SAPI error log.
25;suhosin.log.sapi = 147; For a list of available classes see table 1.
148;
149;suhosin.log.sapi = S_ALL & ~S_SQL
150;
26 151
27; Defines what classes of security alerts are logged to stdout. Mostly for debugging purposes. 152; suhosin.log.stdout
28;suhosin.log.stdout = 153; ------------------
154; * Type: Integer
155; * Default: S_ALL & ~S_SQL
156;
157; Defines what classes of security alerts are logged through STDOUT. For a list
158; of available classes see table 1.
159;
160;suhosin.log.stdout = S_ALL & ~S_SQL
161;
29 162
30; Defines what classes of security alerts are logged through the external 163; suhosin.log.file
31; logging. 164; ----------------
32;suhosin.log.script = 165; * Type: Integer
166; * Default: S_ALL
167;
168; Defines what classes of security alerts are logged to a separate Suhosin log
169; file set by suhosin.log.file.name.
170;
171;suhosin.log.file = S_ALL
172;
33 173
34; Defines what classes of security alerts are logged through the defined PHP 174; suhosin.log.file.name
35; script. 175; ---------------------
36;suhosin.log.phpscript = 0 176; * Type: String
177; * Default:
178;
179; Defines the full path to a dedicated Suhosin log file.
180;
181;suhosin.log.file.name =
182;
37 183
38; Defines the full path to a external logging script. The script is called with 184; suhosin.log.script
185; ------------------
186; * Type: Integer
187; * Default: 0
188;
189; Defines what classes of security alerts are logged through the external logging
190; script. For a list of available classes see table 1. An exception is the
191; S_MEMORY class. It cannot be logged by a script, because S_MEMORY is triggered
192; by buffer overflows etc... which means the process is in an unstable state.
193;
194;suhosin.log.script = 0
195;
196
197; suhosin.log.script.name
198; -----------------------
199; * Type: String
200; * Default:
201;
202; Defines the full path to an external logging script. The script is called with
39; 2 parameters. The first one is the alert class in string notation and the 203; 2 parameters. The first one is the alert class in string notation and the
40; second parameter is the log message. This can be used for example to mail 204; second parameter is the log message. This can be used for example to mail
41; failing MySQL queries to your email address, because on a production system 205; failing MySQL queries to your email address, because on a production system
42; these things should never happen. 206; these things should never happen (S_SQL not yet supported by Suhosin).
207;
43;suhosin.log.script.name = 208;suhosin.log.script.name =
209;
210
211; suhosin.log.phpscript
212; ---------------------
213; * Type: Integer
214; * Default: S_ALL
215;
216; Defines what classes of security alerts are logged through the defined PHP
217; script. For a list of available classes see table 1. Please notice, that only
218; those classes are allowed, that can be triggered during script execution. An
219; exception is the S_MEMORY class. It cannot be logged by a PHP script, because
220; S_MEMORY is triggered by buffer overflows etc... which means the process is in
221; an unstable state.
222;
223;suhosin.log.phpscript = S_ALL
224;
44 225
226; suhosin.log.phpscript.name
227; --------------------------
228; * Type: String
229; * Default:
230;
45; Defines the full path to a PHP logging script. The script is called with 2 231; Defines the full path to a PHP logging script. The script is called with 2
46; variables registered in the current scope: SUHOSIN_ERRORCLASS and 232; variables registered in the current scope: SUHOSIN_ERRORCLASS and
47; SUHOSIN_ERROR. The first one is the alert class and the second variable is 233; SUHOSIN_ERROR. The first one is the alert class and the second variable is the
48; the log message. This can be used for example to mail attempted remote URL 234; log message. This can be used for example to mail attempted remote URL include
49; include attacks to your email address. 235; attacks to your email address.
236;
50;suhosin.log.phpscript.name = 237;suhosin.log.phpscript.name =
238;
51 239
52; Undocumented 240; suhosin.log.phpscript.is_safe
241; -----------------------------
242; * Type: Boolean
243; * Default: Off
244;
245; Disables open_basedir (and safe_mode for older PHP versions < 5.4) when
246; executing suhosin.log.phpscript.name.
247;
53;suhosin.log.phpscript.is_safe = Off 248;suhosin.log.phpscript.is_safe = Off
249;
54 250
55; When the Hardening-Patch logs an error the log message also contains the IP 251; ================
56; of the attacker. Usually this IP is retrieved from the REMOTE_ADDR SAPI
57; environment variable. With this switch it is possible to change this behavior
58; to read the IP from the X-Forwarded-For HTTP header. This is f.e. necessary
59; when your PHP server runs behind a reverse proxy.
60;suhosin.log.use-x-forwarded-for = Off
61
62; -----------------------------------------------------------------------------
63; Executor Options 252; Executor Options
253; ================
254
255; suhosin.log.use-x-forwarded-for
256; -------------------------------
257; * Type: Boolean
258; * Default: Off
259;
260; When the Suhosin logs an error the log message also contains the IP of the
261; attacker. Usually this IP is retrieved from the REMOTE_ADDR SAPI environment
262; variable. With this switch it is possible to change this behavior to read the
263; IP from the X-Forwarded-For HTTP header. This is for example necessary when
264; your PHP server runs behind a reverse proxy.
265;
266;suhosin.log.use-x-forwarded-for = Off
267;
64 268
269; suhosin.executor.max_depth
270; --------------------------
271; * Type: Integer
272; * Default: 0
273;
65; Defines the maximum stack depth allowed by the executor before it stops the 274; Defines the maximum stack depth allowed by the executor before it stops the
66; script. Without this function an endless recursion in a PHP script could 275; script. Without this function an endless recursion in a PHP script could crash
67; crash the PHP executor or trigger the configured memory_limit. A value of 276; the PHP executor or trigger the configured memory_limit. A value of '0'
68; "0" disables this feature. 277; disables this feature.
278;
69;suhosin.executor.max_depth = 0 279;suhosin.executor.max_depth = 0
280;
70 281
71; Defines how many "../" an include filename needs to contain to be considered 282; suhosin.executor.include.max_traversal
72; an attack and stopped. A value of "2" will block "../../etc/passwd", while a 283; --------------------------------------
73; value of "3" will allow it. Most PHP applications should work flawlessly with 284; * Type: Integer
74; values "4" or "5". A value of "0" disables this feature. 285; * Default: 0
286;
287; Defines how many '../' an include filename needs to contain to be considered an
288; attack and stopped. A value of '2' will block '../../etc/passwd', while a value
289; of '3' will allow it. Most PHP applications should work flawlessly with values
290; '4' or '5'. A value of '0' disables this feature.
291;
75;suhosin.executor.include.max_traversal = 0 292;suhosin.executor.include.max_traversal = 0
293;
76 294
295; suhosin.executor.include.whitelist
296; ----------------------------------
297; * Type: String
298; * Default:
299;
77; Comma separated whitelist of URL schemes that are allowed to be included from 300; Comma separated whitelist of URL schemes that are allowed to be included from
78; include or require statements. Additionally to URL schemes it is possible to 301; include or require statements. Additionally to URL schemes it is possible to
79; specify the beginning of allowed URLs. (f.e.: php://stdin) If no whitelist is 302; specify the beginning of allowed URLs. (f.e.: php://stdin) If no whitelist is
80; specified, then the blacklist is evaluated. 303; specified, then the blacklist is evaluated.
304;
81;suhosin.executor.include.whitelist = 305;suhosin.executor.include.whitelist =
306;
82 307
308; suhosin.executor.include.blacklist
309; ----------------------------------
310; * Type: String
311; * Default:
312;
83; Comma separated blacklist of URL schemes that are not allowed to be included 313; Comma separated blacklist of URL schemes that are not allowed to be included
84; from include or require statements. Additionally to URL schemes it is 314; from include or require statements. Additionally to URL schemes it is possible
85; possible to specify the beginning of allowed URLs. (f.e.: php://stdin) If no 315; to specify the beginning of allowed URLs. (f.e.: php://stdin) If no blacklist
86; blacklist and no whitelist is specified all URL schemes are forbidden. 316; and no whitelist is specified all URL schemes are forbidden.
317;
87;suhosin.executor.include.blacklist = 318;suhosin.executor.include.blacklist =
319;
88 320
89; Defines if PHP is allows to run code from files that are writable by the 321; suhosin.executor.include.allow_writable_files
90; current process. If a file is created or modified by a PHP process, there 322; ---------------------------------------------
91; is a potential danger of code injection. Only turn this on if you are sure 323; * Type: Boolean
92; that your application does not require writable PHP files. 324; * Default: On
325;
326; Turn this flag off to prevent PHP from executing writable PHP files. This can
327; prevent attackers from executing code that was uploaded before.
328;
329; Note: Some software such as web-installers or web-based plugin installers won't
330; work out of the box with this flag turned off.
331;
93;suhosin.executor.include.allow_writable_files = On 332;suhosin.executor.include.allow_writable_files = On
333;
94 334
335; suhosin.executor.func.whitelist
336; -------------------------------
337; * Type: String
338; * Default:
339;
95; Comma separated whitelist of functions that are allowed to be called. If the 340; Comma separated whitelist of functions that are allowed to be called. If the
96; whitelist is empty the blacklist is evaluated, otherwise calling a function 341; whitelist is empty the blacklist is evaluated, otherwise calling a function not
97; not in the whitelist will terminate the script and get logged. 342; in the whitelist will terminate the script and get logged.
343;
98;suhosin.executor.func.whitelist = 344;suhosin.executor.func.whitelist =
345;
99 346
100; Comma separated blacklist of functions that are not allowed to be called. If 347; suhosin.executor.func.blacklist
101; no whitelist is given, calling a function within the blacklist will terminate 348; -------------------------------
102; the script and get logged. 349; * Type: String
350; * Default:
351;
352; Comma separated blacklist of functions that are not allowed to be called. If no
353; whitelist is given, calling a function within the blacklist will terminate the
354; script and get logged.
355;
103;suhosin.executor.func.blacklist = 356;suhosin.executor.func.blacklist =
357;
104 358
359; suhosin.executor.eval.whitelist
360; -------------------------------
361; * Type: String
362; * Default:
363;
105; Comma separated whitelist of functions that are allowed to be called from 364; Comma separated whitelist of functions that are allowed to be called from
106; within eval(). If the whitelist is empty the blacklist is evaluated, 365; within eval(). If the whitelist is empty the blacklist is evaluated, otherwise
107; otherwise calling a function not in the whitelist will terminate the script 366; calling a function not in the whitelist will terminate the script and get
108; and get logged. 367; logged. Please read the instructions carefully.
368;
109;suhosin.executor.eval.whitelist = 369;suhosin.executor.eval.whitelist =
370;
110 371
372; suhosin.executor.eval.blacklist
373; -------------------------------
374; * Type: String
375; * Default:
376;
111; Comma separated blacklist of functions that are not allowed to be called from 377; Comma separated blacklist of functions that are not allowed to be called from
112; within eval(). If no whitelist is given, calling a function within the 378; within eval(). If no whitelist is given, calling a function within the
113; blacklist will terminate the script and get logged. 379; blacklist will terminate the script and get logged. Please read the
380; instructions carefully.
381;
114;suhosin.executor.eval.blacklist = 382;suhosin.executor.eval.blacklist =
383;
115 384
116; eval() is a very dangerous statement and therefore you might want to disable 385; suhosin.executor.disable_eval
117; it completely. Deactivating it will however break lots of scripts. Because 386; -----------------------------
118; every violation is logged, this allows finding all places where eval() is 387; * Type: Boolean
119; used. 388; * Default: Off
389;
390; eval() is a very dangerous statement and therefore you might want to disable it
391; completely. Deactivating it will however break lots of scripts. Because every
392; violation is logged, this allows finding all places where eval() is used.
393;
120;suhosin.executor.disable_eval = Off 394;suhosin.executor.disable_eval = Off
395;
121 396
397; suhosin.executor.disable_emodifier
398; ----------------------------------
399; * Type: Boolean
400; * Default: Off
401;
122; The /e modifier inside preg_replace() allows code execution. Often it is the 402; The /e modifier inside preg_replace() allows code execution. Often it is the
123; cause for remote code execution exploits. It is wise to deactivate this 403; cause for remote code execution exploits. It is wise to deactivate this feature
124; feature and test where in the application it is used. The developer using the 404; and test where in the application it is used. The developer using the /e
125; /e modifier should be made aware that he should use preg_replace_callback() 405; modifier should be made aware that he should use preg_replace_callback()
126; instead. 406; instead.
407;
127;suhosin.executor.disable_emodifier = Off 408;suhosin.executor.disable_emodifier = Off
409;
128 410
129; This flag reactivates symlink() when open_basedir is used, which is disabled 411; ============
130; by default in Suhosin >= 0.9.6. Allowing symlink() while open_basedir is used
131; is actually a security risk.
132;suhosin.executor.allow_symlink = Off
133
134; -----------------------------------------------------------------------------
135; Misc Options 412; Misc Options
413; ============
136 414
415; suhosin.executor.allow_symlink
416; ------------------------------
417; * Type: Boolean
418; * Default: Off
419;
420; This flag reactivates symlink() when open_basedir is used, which is disabled by
421; default in Suhosin >= 0.9.6. Allowing symlink() while open_basedir is used is
422; actually a security risk.
423;
424;suhosin.executor.allow_symlink = Off
425;
426
427; suhosin.simulation
428; ------------------
429; * Type: Boolean
430; * Default: Off
431;
137; If you fear that Suhosin breaks your application, you can activate Suhosin's 432; If you fear that Suhosin breaks your application, you can activate Suhosin's
138; simulation mode with this flag. When Suhosin runs in simulation mode, 433; simulation mode with this flag. When Suhosin runs in simulation mode,
139; violations are logged as usual, but nothing is blocked or removed from the 434; violations are logged as usual, but nothing is blocked or removed from the
140; request. (Transparent features are NOT deactivated in simulation mode.) 435; request. (Transparent Encryptions are NOT deactivated in simulation mode.)
141; (since v0.9.30 affects (dis)allowed functions) 436;
142;suhosin.simulation = Off 437;suhosin.simulation = Off
438;
439
440; suhosin.perdir
441; --------------
442; * Type: String
443; * Default: "0"
444;
445; Allow certain categories of config directives to be changed by .htaccess for
446; each directory individually. Possible values are "l" (log), "e" (exec), "g"
447; (get), "c" (cookie), "p" (post), "r" (request), "s" (sql), "u" (upload), "m"
448; (misc) or any combination, e.g. "legcprsum" to allow everything. Both "0" and
449; no value disable this feature.
450;
451;suhosin.perdir = "0"
452;
143 453
454; suhosin.protectkey
455; ------------------
456; * Type: Boolean
457; * Default: On
458;
459; Prevent Suhosin's secret key material (suhosin.cookie.cryptkey,
460; suhosin.session.cryptkey, suhosin.rand.seedingkey) from being exposed by
461; phpinfo().
462;
463;suhosin.protectkey = On
464;
465
466; suhosin.coredump
467; ----------------
468; * Type: Boolean
469; * Default: Off
470;
471; Controls if suhosin coredumps when the optional suhosin patch detects a buffer
472; overflow, memory corruption or double free. This is only for debugging purposes
473; and should not be activated.
474;
475;suhosin.coredump = Off
476;
477
478; suhosin.stealth
479; ---------------
480; * Type: Boolean
481; * Default: On
482;
483; controls if suhosin loads in stealth mode when it is not the only
484; zend_extension (Required for full compatibility with certain encoders that
485; consider open source untrusted. e.g. ionCube, Zend)
486;
487;suhosin.stealth = On
488;
489
490; suhosin.apc_bug_workaround
491; --------------------------
492; * Type: Boolean
493; * Default: Off
494;
144; APC 3.0.12(p1/p2) uses reserved resources without requesting a resource slot 495; APC 3.0.12(p1/p2) uses reserved resources without requesting a resource slot
145; first. It always uses resource slot 0. If Suhosin got this slot assigned APC 496; first. It always uses resource slot 0. If Suhosin got this slot assigned APC
146; will overwrite the information Suhosin stores in this slot. When this flag is 497; will overwrite the information Suhosin stores in this slot. When this flag is
147; set Suhosin will request 2 Slots and use the second one. This allows working 498; set Suhosin will request 2 Slots and use the second one. This allows working
148; correctly with these buggy APC versions. 499; correctly with these buggy APC versions.
500;
149;suhosin.apc_bug_workaround = Off 501;suhosin.apc_bug_workaround = Off
502;
150 503
151; When a SQL Query fails scripts often spit out a bunch of useful information 504; suhosin.disable.display_errors
152; for possible attackers. When this configuration directive is turned on, the 505; ------------------------------
153; script will silently terminate, after the problem has been logged. (This is 506; * Type: String
154; not yet supported) 507; * Default: 0
155;suhosin.sql.bailout_on_error = Off 508;
156 509; Prevent PHP from setting display_errors programmatically. "0" means off. Any
157; This is an experimental feature for shared environments. With this 510; one of "1", "on", "yes", "true" means on. "fail" or "2" (or greater values)
158; configuration option it is possible to specify a prefix that is automatically 511; will let PHP know that the value change failed.
159; prepended to the database username, whenever a database connection is made. 512;
160; (Unless the username starts with the prefix) 513;suhosin.disable.display_errors = 0
161;suhosin.sql.user_prefix =
162
163; This is an experimental feature for shared environments. With this
164; configuration option it is possible to specify a postfix that is
165; automatically appended to the database username, whenever a database
166; connection is made. (Unless the username end with the postfix)
167; 514;
168; With this feature it is possible for shared hosters to disallow customers to
169; connect with the usernames of other customers. This feature is experimental,
170; because support for PDO and PostgreSQL are not yet implemented.
171;suhosin.sql.user_postfix =
172 515
516; suhosin.multiheader
517; -------------------
518; * Type: Boolean
519; * Default: Off
520;
173; This directive controls if multiple headers are allowed or not in a header() 521; This directive controls if multiple headers are allowed or not in a header()
174; call. By default the Hardening-Patch forbids this. (HTTP headers spanning 522; call. By default the Suhosin forbids this. (HTTP headers spanning multiple
175; multiple lines are still allowed). 523; lines are still allowed).
524;
176;suhosin.multiheader = Off 525;suhosin.multiheader = Off
526;
177 527
178; This directive controls if the mail() header protection is activated or not 528; suhosin.mail.protect
179; and to what degree it is activated. The appended table lists the possible 529; --------------------
530; * Type: Integer
531; * Default: 0
532;
533; This directive controls if the mail() header protection is activated or not and
534; to what degree it is activated. The appended table lists the possible
180; activation levels. 535; activation levels.
181suhosin.mail.protect = 1 536;
537; +-------+--------------------------------------------------------------------+
538; | Value | Description |
539; +=======+====================================================================+
540; | 0 | mail() header protection is disabled |
541; +-------+--------------------------------------------------------------------+
542; | 1 | Disallows newlines in Subject:, To: headers and double newlines in |
543; | | additional headers |
544; +-------+--------------------------------------------------------------------+
545; | 2 | Additionally disallows To:, CC:, BCC: in additional headers |
546; +-------+--------------------------------------------------------------------+
547;
548; Logging of this class of alerts is controlled by the new S_MAIL constant.
549;
550;suhosin.mail.protect = 0
551;
182 552
553; ========================
554; SQL Injection Protection
555; ========================
556
557; suhosin.memory_limit
558; --------------------
559; * Type: Integer
560; * Default: 0
561;
183; As long scripts are not running within safe_mode they are free to change the 562; As long scripts are not running within safe_mode they are free to change the
184; memory_limit to whatever value they want. Suhosin changes this fact and 563; memory_limit to whatever value they want. Suhosin changes this fact and
185; disallows setting the memory_limit to a value greater than the one the script 564; disallows setting the memory_limit to a value greater than the one the script
186; started with, when this option is left at 0. A value greater than 0 means 565; started with, when this option is left at 0. A value greater than 0 means that
187; that Suhosin will disallows scripts setting the memory_limit to a value above 566; Suhosin will disallow scripts setting the memory_limit to a value above this
188; this configured hard limit. This is for example usefull if you want to run 567; configured hard limit. This is for example useful if you want to run the script
189; the script normaly with a limit of 16M but image processing scripts may raise 568; normally with a limit of 16M but image processing scripts may raise it to 20M.
190; it to 20M. 569;
570;
571;
572; This class of features is experimental and still in development. As of Suhosin
573; version 0.9.36 only preliminary MySQL support was added.
574;
191;suhosin.memory_limit = 0 575;suhosin.memory_limit = 0
576;
192 577
193; ----------------------------------------------------------------------------- 578; suhosin.sql.bailout_on_error
194; Randomness Options 579; ----------------------------
580; * Type: Boolean
581; * Default: Off
582;
583; (Planned feature. This is not yet supported.) When an SQL Query fails scripts
584; often spit out a bunch of useful information for possible attackers. When this
585; configuration directive is turned on, the script will silently terminate, after
586; the problem has been logged.
587;
588;suhosin.sql.bailout_on_error = Off
589;
195 590
196; Flag that controls if calls to srand() are ignored in favour of suhosin's 591; suhosin.sql.user_prefix
197; own enhanced seeding - since 0.9.36 calls will trigger auto-reseeding 592; -----------------------
198;suhosin.srand.ignore = On 593; * Type: String
594; * Default:
595;
596; This is an experimental feature for shared environments. With this
597; configuration option it is possible to specify a prefix that is automatically
598; prepended to the database username, whenever a database connection is made.
599; (Unless the username starts with the prefix)
600;
601; With this feature it is possible for shared hosters to disallow customers to
602; connect with the usernames of other customers. This feature is experimental,
603; because support for PDO and PostgreSQL are not yet implemented.
604;
605;suhosin.sql.user_prefix =
606;
199 607
200; Flag that controls if calls to mt_srand() are ignored in favour of suhosin's 608; suhosin.sql.user_postfix
201; own enhanced seeding - since 0.9.36 calls will trigger auto-reseeding 609; ------------------------
202;suhosin.mt_srand.ignore = On 610; * Type: String
611; * Default:
612;
613; This is an experimental feature for shared environments. With this
614; configuration option it is possible to specify a postfix that is automatically
615; appended to the database username, whenever a database connection is made.
616; (Unless the username end with the postfix)
617;
618; With this feature it is possible for shared hosters to disallow customers to
619; connect with the usernames of other customers. This feature is experimental,
620; because support for PDO and PostgreSQL are not yet implemented.
621;
622;suhosin.sql.user_postfix =
623;
203 624
204; Server configuration can add a string into the entropy generation to further 625; suhosin.sql.comment
205; improve the entropy used for reseeding rand()/mt_rand() 626; -------------------
206;suhosin.rand.seedingkey = 627; * Type: Integer
628; * Default: 0
629;
630; This is an experimental feature. Alert if an SQL query contains one or more
631; comments starting with --, /* or #. A value of 1 logs the alert; 2 or greater
632; let the call fail.
633;
634; Note: Mysql conditional statements starting with ``/*!`` are exempt if used
635; with Mysqli.
636;
637;suhosin.sql.comment = 0
638;
207 639
208; Controls if automatic reseeding of rand() / mt_rand() is done for every 640; suhosin.sql.opencomment
209; new request. Will improve security but decrease performance. 641; -----------------------
210; suhosin.rand.reseed_every_request = Off 642; * Type: Integer
643; * Default: 0
644;
645; This is an experimental feature.
646; Alert if a MySQL comment was started but not closed: ``/*`` without ``*/``. A
647; value of 1 logs the alert; 2 or greater let the call fail.
648;
649;suhosin.sql.opencomment = 0
650;
651
652; suhosin.sql.multiselect
653; -----------------------
654; * Type: Integer
655; * Default: 0
656;
657; This is an experimental feature.
658; Alert if an SQL query contains more than one SELECT statement. A value of 1
659; logs the alert; 2 or greater let the call fail.
660;
661; Note: This flag will recognise multiple statements as well as subselects, e.g.
662; "SELECT 1; SELECT 2" and "SELECT * FROM (SELECT 1)".
663;
664;suhosin.sql.multiselect = 0
665;
211 666
212; ----------------------------------------------------------------------------- 667; ==============================
213; Transparent Encryption Options 668; Transparent Encryption Options
669; ==============================
214 670
671; suhosin.sql.union
672; -----------------
673; * Type: Integer
674; * Default: 0
675;
676; This is an experimental feature.
677; Alert if an SQL query contains one or more UNIONs.
678; A value of 1 logs the alert; 2 or greater let the call fail.
679;
680;suhosin.sql.union = 0
681;
682
683; suhosin.session.encrypt
684; -----------------------
685; * Type: Boolean
686; * Default: On
687;
215; Flag that decides if the transparent session encryption is activated or not. 688; Flag that decides if the transparent session encryption is activated or not.
689;
216;suhosin.session.encrypt = On 690;suhosin.session.encrypt = On
691;
217 692
693; suhosin.session.cryptkey
694; ------------------------
695; * Type: String
696; * Default:
697;
218; Session data can be encrypted transparently. The encryption key used consists 698; Session data can be encrypted transparently. The encryption key used consists
219; of this user defined string (which can be altered by a script via ini_set()) 699; of this user defined string (which can be altered by a script via ini_set())
220; and optionally the User-Agent, the Document-Root and 0-4 Octects of the 700; and optionally the User-Agent, the Document-Root and 0-4 octects of the
221; REMOTE_ADDR. 701; REMOTE_ADDR.
702;
222;suhosin.session.cryptkey = 703;suhosin.session.cryptkey =
704;
223 705
706; suhosin.session.cryptua
707; -----------------------
708; * Type: Boolean
709; * Default: Off
710;
224; Flag that decides if the transparent session encryption key depends on the 711; Flag that decides if the transparent session encryption key depends on the
225; User-Agent field. (When activated this feature transparently adds a little 712; User-Agent field. (When activated this feature transparently adds a little bit
226; bit protection against session fixation/hijacking attacks) 713; protection against session fixation/hijacking attacks)
227;suhosin.session.cryptua = On 714;
715;suhosin.session.cryptua = Off
716;
228 717
718; suhosin.session.cryptdocroot
719; ----------------------------
720; * Type: Boolean
721; * Default: On
722;
229; Flag that decides if the transparent session encryption key depends on the 723; Flag that decides if the transparent session encryption key depends on the
230; Documentroot field. 724; Documentroot field.
725;
231;suhosin.session.cryptdocroot = On 726;suhosin.session.cryptdocroot = On
727;
232 728
729; suhosin.session.cryptraddr
730; --------------------------
731; * Type: Integer
732; * Default: 0
733;
233; Number of octets (0-4) from the REMOTE_ADDR that the transparent session 734; Number of octets (0-4) from the REMOTE_ADDR that the transparent session
234; encryption key depends on. Keep in mind that this should not be used on sites 735; encryption key depends on. Keep in mind that this should not be used on sites
235; that have visitors from big ISPs, because their IP address often changes 736; that have visitors from big ISPs, because their IP address often changes during
236; during a session. But this feature might be interesting for admin interfaces 737; a session. But this feature might be interesting for admin interfaces or
237; or intranets. When used wisely this is a transparent protection against 738; intranets. When used wisely this is a transparent protection against session
238; session hijacking/fixation. 739; hijacking/fixation. This feature supports IPv4 only.
740;
239;suhosin.session.cryptraddr = 0 741;suhosin.session.cryptraddr = 0
742;
240 743
744; suhosin.session.checkraddr
745; --------------------------
746; * Type: Integer
747; * Default: 0
748;
241; Number of octets (0-4) from the REMOTE_ADDR that have to match to decrypt the 749; Number of octets (0-4) from the REMOTE_ADDR that have to match to decrypt the
242; session. The difference to suhosin.session.cryptaddr is, that the IP is not 750; session. The difference to suhosin.session.cryptaddr is, that the IP is not
243; part of the encryption key, so that the same session can be used for 751; part of the encryption key, so that the same session can be used for different
244; different areas with different protection levels on the site. 752; areas with different protection levels on the site. This feature supports IPv4
753; only.
754;
245;suhosin.session.checkraddr = 0 755;suhosin.session.checkraddr = 0
756;
246 757
758; suhosin.cookie.encrypt
759; ----------------------
760; * Type: Boolean
761; * Default: Off
762;
247; Flag that decides if the transparent cookie encryption is activated or not. 763; Flag that decides if the transparent cookie encryption is activated or not.
248;suhosin.cookie.encrypt = 0 764;
765;suhosin.cookie.encrypt = Off
766;
249 767
768; suhosin.cookie.cryptkey
769; -----------------------
770; * Type: String
771; * Default:
772;
250; Cookies can be encrypted transparently. The encryption key used consists of 773; Cookies can be encrypted transparently. The encryption key used consists of
251; this user defined string and optionally the User-Agent, the Document-Root and 774; this user defined string and optionally the User-Agent, the Document-Root and
252; 0-4 Octects of the REMOTE_ADDR. 775; 0-4 octects of the REMOTE_ADDR.
776;
253;suhosin.cookie.cryptkey = 777;suhosin.cookie.cryptkey =
778;
254 779
780; suhosin.cookie.cryptua
781; ----------------------
782; * Type: Boolean
783; * Default: On
784;
255; Flag that decides if the transparent session encryption key depends on the 785; Flag that decides if the transparent session encryption key depends on the
256; User-Agent field. (When activated this feature transparently adds a little 786; User-Agent field. (When activated this feature transparently adds a little bit
257; bit protection against session fixation/hijacking attacks (if only session 787; protection against session fixation/hijacking attacks (if only session cookies
258; cookies are allowed)) 788; are allowed))
789;
259;suhosin.cookie.cryptua = On 790;suhosin.cookie.cryptua = On
791;
260 792
793; suhosin.cookie.cryptdocroot
794; ---------------------------
795; * Type: Boolean
796; * Default: On
797;
261; Flag that decides if the transparent cookie encryption key depends on the 798; Flag that decides if the transparent cookie encryption key depends on the
262; Documentroot field. 799; Documentroot field.
800;
263;suhosin.cookie.cryptdocroot = On 801;suhosin.cookie.cryptdocroot = On
802;
264 803
804; suhosin.cookie.cryptraddr
805; -------------------------
806; * Type: Integer
807; * Default: 0
808;
265; Number of octets (0-4) from the REMOTE_ADDR that the transparent cookie 809; Number of octets (0-4) from the REMOTE_ADDR that the transparent cookie
266; encryption key depends on. Keep in mind that this should not be used on sites 810; encryption key depends on. Keep in mind that this should not be used on sites
267; that have visitors from big ISPs, because their IP address often changes 811; that have visitors from big ISPs, because their IP address often changes during
268; during a session. But this feature might be interesting for admin interfaces 812; a session. But this feature might be interesting for admin interfaces or
269; or intranets. When used wisely this is a transparent protection against 813; intranets. When used wisely this is a transparent protection against session
270; session hijacking/fixation. 814; hijacking/fixation. This feature supports IPv4 only.
815;
271;suhosin.cookie.cryptraddr = 0 816;suhosin.cookie.cryptraddr = 0
817;
272 818
819; suhosin.cookie.checkraddr
820; -------------------------
821; * Type: Integer
822; * Default: 0
823;
273; Number of octets (0-4) from the REMOTE_ADDR that have to match to decrypt the 824; Number of octets (0-4) from the REMOTE_ADDR that have to match to decrypt the
274; cookie. The difference to suhosin.cookie.cryptaddr is, that the IP is not 825; cookie. The difference to suhosin.cookie.cryptaddr is, that the IP is not part
275; part of the encryption key, so that the same cookie can be used for different 826; of the encryption key, so that the same cookie can be used for different areas
276; areas with different protection levels on the site. 827; with different protection levels on the site. This feature supports IPv4 only.
828;
277;suhosin.cookie.checkraddr = 0 829;suhosin.cookie.checkraddr = 0
830;
278 831
279; In case not all cookies are supposed to get encrypted this is a comma 832; suhosin.cookie.cryptlist
280; separated list of cookie names that should get encrypted. All other cookies 833; ------------------------
281; will not get touched. 834; * Type: String
835; * Default:
836;
837; In case not all cookies are supposed to get encrypted this is a comma separated
838; list of cookie names that should get encrypted. All other cookies will not get
839; touched.
840;
282;suhosin.cookie.cryptlist = 841;suhosin.cookie.cryptlist =
842;
843
844; =================
845; Filtering Options
846; =================
283 847
284; In case some cookies should not be crypted this is a comma separated list of 848; suhosin.cookie.plainlist
849; ------------------------
850; * Type: String
851; * Default:
852;
853; In case some cookies should not be encrypted this is a comma separated list of
285; cookies that do not get encrypted. All other cookies will be encrypted. 854; cookies that do not get encrypted. All other cookies will be encrypted.
855;
286;suhosin.cookie.plainlist = 856;suhosin.cookie.plainlist =
857;
287 858
288; ----------------------------------------------------------------------------- 859; suhosin.filter.action
289; Filtering Options 860; ---------------------
290 861; * Type: Mixed
291; Defines the reaction of Suhosin on a filter violation. 862; * Default:
863;
864; Defines the reaction of Suhosin on a filter violation. Following possible
865; actions are supported
866;
867; +-------------------------------+--------------------------------------------+
868; | Type | Description |
869; +===============================+============================================+
870; | | Normal action is simply blocking the |
871; | | variable from being registered |
872; +-------------------------------+--------------------------------------------+
873; | 402 | Do not execute the script and return a |
874; | | HTTP 402 response code |
875; +-------------------------------+--------------------------------------------+
876; | [302,]http://www.example.com | Redirect to http://www.example.com instead |
877; | | of executing. Optionally set a specific |
878; | | HTTP response code |
879; +-------------------------------+--------------------------------------------+
880; | [402,]/var/scripts/badguy.php | Execute a specific PHP script instead of |
881; | | the requested script. Optionally set a |
882; | | specific HTTP response code |
883; +-------------------------------+--------------------------------------------+
884;
292;suhosin.filter.action = 885;suhosin.filter.action =
886;
293 887
888; suhosin.cookie.max_array_depth
889; ------------------------------
890; * Type: Integer
891; * Default: 50
892;
294; Defines the maximum depth an array variable may have, when registered through 893; Defines the maximum depth an array variable may have, when registered through
295; the COOKIE. 894; the COOKIE.
895;
896; Note: Array depth is not the number of elements within an array.
897;
296;suhosin.cookie.max_array_depth = 50 898;suhosin.cookie.max_array_depth = 50
899;
297 900
901; suhosin.cookie.max_array_index_length
902; -------------------------------------
903; * Type: Integer
904; * Default: 64
905;
298; Defines the maximum length of array indices for variables registered through 906; Defines the maximum length of array indices for variables registered through
299; the COOKIE. 907; the COOKIE.
908;
300;suhosin.cookie.max_array_index_length = 64 909;suhosin.cookie.max_array_index_length = 64
910;
301 911
912; suhosin.cookie.max_name_length
913; ------------------------------
914; * Type: Integer
915; * Default: 64
916;
302; Defines the maximum length of variable names for variables registered through 917; Defines the maximum length of variable names for variables registered through
303; the COOKIE. For array variables this is the name in front of the indices. 918; the COOKIE. For array variables this is the name in front of the indices.
919;
304;suhosin.cookie.max_name_length = 64 920;suhosin.cookie.max_name_length = 64
921;
305 922
923; suhosin.cookie.max_totalname_length
924; -----------------------------------
925; * Type: Integer
926; * Default: 256
927;
306; Defines the maximum length of the total variable name when registered through 928; Defines the maximum length of the total variable name when registered through
307; the COOKIE. For array variables this includes all indices. 929; the COOKIE. For array variables this includes all indices.
930;
308;suhosin.cookie.max_totalname_length = 256 931;suhosin.cookie.max_totalname_length = 256
932;
309 933
310; Defines the maximum length of a variable that is registered through the 934; suhosin.cookie.max_value_length
311; COOKIE. 935; -------------------------------
936; * Type: Integer
937; * Default: 10000
938;
939; Defines the maximum length of a variable that is registered through the COOKIE.
940;
312;suhosin.cookie.max_value_length = 10000 941;suhosin.cookie.max_value_length = 10000
942;
313 943
944; suhosin.cookie.max_vars
945; -----------------------
946; * Type: Integer
947; * Default: 100
948;
314; Defines the maximum number of variables that may be registered through the 949; Defines the maximum number of variables that may be registered through the
315; COOKIE. 950; COOKIE.
951;
316;suhosin.cookie.max_vars = 100 952;suhosin.cookie.max_vars = 100
953;
317 954
955; suhosin.cookie.disallow_nul
956; ---------------------------
957; * Type: Boolean
958; * Default: On
959;
318; When set to On ASCIIZ chars are not allowed in variables. 960; When set to On ASCIIZ chars are not allowed in variables.
319;suhosin.cookie.disallow_nul = 1 961;
962;suhosin.cookie.disallow_nul = On
963;
320 964
965; suhosin.cookie.disallow_ws
966; --------------------------
967; * Type: Boolean
968; * Default: On
969;
970; Ignore cookies with names starting with whitespace.
971;
972;suhosin.cookie.disallow_ws = On
973;
974
975; suhosin.get.max_array_depth
976; ---------------------------
977; * Type: Integer
978; * Default: 50
979;
321; Defines the maximum depth an array variable may have, when registered through 980; Defines the maximum depth an array variable may have, when registered through
322; the URL 981; the URL.
982;
983; Note: Array depth is not the number of elements within an array.
984;
323;suhosin.get.max_array_depth = 50 985;suhosin.get.max_array_depth = 50
986;
324 987
988; suhosin.get.max_array_index_length
989; ----------------------------------
990; * Type: Integer
991; * Default: 64
992;
325; Defines the maximum length of array indices for variables registered through 993; Defines the maximum length of array indices for variables registered through
326; the URL 994; the URL.
995;
327;suhosin.get.max_array_index_length = 64 996;suhosin.get.max_array_index_length = 64
997;
328 998
999; suhosin.get.max_name_length
1000; ---------------------------
1001; * Type: Integer
1002; * Default: 64
1003;
329; Defines the maximum length of variable names for variables registered through 1004; Defines the maximum length of variable names for variables registered through
330; the URL. For array variables this is the name in front of the indices. 1005; the URL. For array variables this is the name in front of the indices.
1006;
331;suhosin.get.max_name_length = 64 1007;suhosin.get.max_name_length = 64
1008;
332 1009
1010; suhosin.get.max_totalname_length
1011; --------------------------------
1012; * Type: Integer
1013; * Default: 256
1014;
333; Defines the maximum length of the total variable name when registered through 1015; Defines the maximum length of the total variable name when registered through
334; the URL. For array variables this includes all indices. 1016; the URL. For array variables this includes all indices.
1017;
335;suhosin.get.max_totalname_length = 256 1018;suhosin.get.max_totalname_length = 256
1019;
336 1020
1021; suhosin.get.max_value_length
1022; ----------------------------
1023; * Type: Integer
1024; * Default: 512
1025;
337; Defines the maximum length of a variable that is registered through the URL. 1026; Defines the maximum length of a variable that is registered through the URL.
1027;
338;suhosin.get.max_value_length = 512 1028;suhosin.get.max_value_length = 512
1029;
339 1030
340; Defines the maximum number of variables that may be registered through the 1031; suhosin.get.max_vars
341; URL. 1032; --------------------
1033; * Type: Integer
1034; * Default: 100
1035;
1036; Defines the maximum number of variables that may be registered through the URL.
1037;
342;suhosin.get.max_vars = 100 1038;suhosin.get.max_vars = 100
1039;
343 1040
1041; suhosin.get.disallow_nul
1042; ------------------------
1043; * Type: Boolean
1044; * Default: On
1045;
344; When set to On ASCIIZ chars are not allowed in variables. 1046; When set to On ASCIIZ chars are not allowed in variables.
345;suhosin.get.disallow_nul = 1 1047;
1048;suhosin.get.disallow_nul = On
1049;
346 1050
347; Defines the maximum depth an array variable may have, when registered through 1051; suhosin.get.disallow_ws
348; a POST request. 1052; -----------------------
1053; * Type: Boolean
1054; * Default: Off
1055;
1056; Ignore GET parameters with names starting with whitespace.
1057;
1058;suhosin.get.disallow_ws = Off
1059;
1060
1061; suhosin.post.max_array_depth
1062; ----------------------------
1063; * Type: Integer
1064; * Default: 50
1065;
1066; Defines the maximum depth an array variable may have, when registered through a
1067; POST request.
1068;
1069; Note: Array depth is not the number of elements within an array.
1070;
349;suhosin.post.max_array_depth = 50 1071;suhosin.post.max_array_depth = 50
1072;
350 1073
351; Defines the maximum length of array indices for variables registered through 1074; suhosin.post.max_array_index_length
352; a POST request. 1075; -----------------------------------
1076; * Type: Integer
1077; * Default: 64
1078;
1079; Defines the maximum length of array indices for variables registered through a
1080; POST request.
1081;
353;suhosin.post.max_array_index_length = 64 1082;suhosin.post.max_array_index_length = 64
1083;
354 1084
355; Defines the maximum length of variable names for variables registered through 1085; suhosin.post.max_name_length
356; a POST request. For array variables this is the name in front of the indices. 1086; ----------------------------
1087; * Type: Integer
1088; * Default: 64
1089;
1090; Defines the maximum length of variable names for variables registered through a
1091; POST request. For array variables this is the name in front of the indices.
1092;
357;suhosin.post.max_name_length = 64 1093;suhosin.post.max_name_length = 64
1094;
358 1095
359; Defines the maximum length of the total variable name when registered through 1096; suhosin.post.max_totalname_length
360; a POST request. For array variables this includes all indices. 1097; ---------------------------------
1098; * Type: Integer
1099; * Default: 256
1100;
1101; Defines the maximum length of the total variable name when registered through a
1102; POST request. For array variables this includes all indices.
1103;
361;suhosin.post.max_totalname_length = 256 1104;suhosin.post.max_totalname_length = 256
1105;
362 1106
1107; suhosin.post.max_value_length
1108; -----------------------------
1109; * Type: Integer
1110; * Default: 1000000
1111;
363; Defines the maximum length of a variable that is registered through a POST 1112; Defines the maximum length of a variable that is registered through a POST
364; request. 1113; request.
1114;
365;suhosin.post.max_value_length = 1000000 1115;suhosin.post.max_value_length = 1000000
1116;
366 1117
1118; suhosin.post.max_vars
1119; ---------------------
1120; * Type: Integer
1121; * Default: 1000
1122;
367; Defines the maximum number of variables that may be registered through a POST 1123; Defines the maximum number of variables that may be registered through a POST
368; request. 1124; request.
1125;
369;suhosin.post.max_vars = 1000 1126;suhosin.post.max_vars = 1000
1127;
370 1128
1129; suhosin.post.disallow_nul
1130; -------------------------
1131; * Type: Boolean
1132; * Default: On
1133;
371; When set to On ASCIIZ chars are not allowed in variables. 1134; When set to On ASCIIZ chars are not allowed in variables.
372;suhosin.post.disallow_nul = 1 1135;
1136;suhosin.post.disallow_nul = On
1137;
1138
1139; suhosin.post.disallow_ws
1140; ------------------------
1141; * Type: Boolean
1142; * Default: Off
1143;
1144; Ignore POST parameters with names starting with whitespace.
1145;
1146;suhosin.post.disallow_ws = Off
1147;
373 1148
1149; suhosin.request.max_array_depth
1150; -------------------------------
1151; * Type: Integer
1152; * Default: 50
1153;
374; Defines the maximum depth an array variable may have, when registered through 1154; Defines the maximum depth an array variable may have, when registered through
375; GET , POST or COOKIE. This setting is also an upper limit for the separate 1155; GET , POST or COOKIE. This setting is also an upper limit for the separate GET,
376; GET, POST, COOKIE configuration directives. 1156; POST, COOKIE configuration directives.
1157;
1158; Note: Array depth is not the number of elements within an array.
1159;
377;suhosin.request.max_array_depth = 50 1160;suhosin.request.max_array_depth = 50
1161;
378 1162
1163; suhosin.request.max_array_index_length
1164; --------------------------------------
1165; * Type: Integer
1166; * Default: 64
1167;
379; Defines the maximum length of array indices for variables registered through 1168; Defines the maximum length of array indices for variables registered through
380; GET, POST or COOKIE. This setting is also an upper limit for the separate 1169; GET, POST or COOKIE. This setting is also an upper limit for the separate GET,
381; GET, POST, COOKIE configuration directives. 1170; POST, COOKIE configuration directives.
1171;
382;suhosin.request.max_array_index_length = 64 1172;suhosin.request.max_array_index_length = 64
1173;
383 1174
1175; suhosin.request.max_totalname_length
1176; ------------------------------------
1177; * Type: Integer
1178; * Default: 256
1179;
384; Defines the maximum length of variable names for variables registered through 1180; Defines the maximum length of variable names for variables registered through
385; the COOKIE, the URL or through a POST request. This is the complete name 1181; the COOKIE, the URL or through a POST request. This is the complete name
386; string, including all indicies. This setting is also an upper limit for the 1182; string, including all indices. This setting is also an upper limit for the
387; separate GET, POST, COOKIE configuration directives. 1183; separate GET, POST, COOKIE configuration directives.
1184;
388;suhosin.request.max_totalname_length = 256 1185;suhosin.request.max_totalname_length = 256
1186;
389 1187
390; Defines the maximum length of a variable that is registered through the 1188; suhosin.request.max_value_length
391; COOKIE, the URL or through a POST request. This setting is also an upper 1189; --------------------------------
392; limit for the variable origin specific configuration directives. 1190; * Type: Integer
1191; * Default: 1000000
1192;
1193; Defines the maximum length of a variable that is registered through the COOKIE,
1194; the URL or through a POST request. This setting is also an upper limit for the
1195; variable origin specific configuration directives.
1196;
393;suhosin.request.max_value_length = 1000000 1197;suhosin.request.max_value_length = 1000000
1198;
394 1199
1200; suhosin.request.max_vars
1201; ------------------------
1202; * Type: Integer
1203; * Default: 1000
1204;
395; Defines the maximum number of variables that may be registered through the 1205; Defines the maximum number of variables that may be registered through the
396; COOKIE, the URL or through a POST request. This setting is also an upper 1206; COOKIE, the URL or through a POST request. This setting is also an upper limit
397; limit for the variable origin specific configuration directives. 1207; for the variable origin specific configuration directives.
1208;
398;suhosin.request.max_vars = 1000 1209;suhosin.request.max_vars = 1000
1210;
399 1211
400; Defines the maximum name length (excluding possible array indicies) of 1212; suhosin.request.max_varname_length
401; variables that may be registered through the COOKIE, the URL or through a 1213; ----------------------------------
402; POST request. This setting is also an upper limit for the variable origin 1214; * Type: Integer
403; specific configuration directives. 1215; * Default: 64
1216;
1217; Defines the maximum name length (excluding possible array indices) of variables
1218; that may be registered through the COOKIE, the URL or through a POST request.
1219; This setting is also an upper limit for the variable origin specific
1220; configuration directives.
1221;
404;suhosin.request.max_varname_length = 64 1222;suhosin.request.max_varname_length = 64
1223;
405 1224
1225; suhosin.request.disallow_nul
1226; ----------------------------
1227; * Type: Boolean
1228; * Default: On
1229;
406; When set to On ASCIIZ chars are not allowed in variables. 1230; When set to On ASCIIZ chars are not allowed in variables.
407;suhosin.request.disallow_nul = 1 1231;
408 1232;suhosin.request.disallow_nul = On
409; When set to On the dangerous characters <>"'` are urlencoded when found 1233;
410; not encoded in the server variables REQUEST_URI and QUERY_STRING. This
411; will protect against some XSS vulnerabilities.
412;suhosin.server.encode = 1
413 1234
414; When set to On the dangerous characters <>"'` are replaced with ? in 1235; suhosin.request.disallow_ws
415; the server variables PHP_SELF, PATH_TRANSLATED and PATH_INFO. This will 1236; ---------------------------
416; protect against some XSS vulnerabilities. 1237; * Type: Boolean
417;suhosin.server.strip = 1 1238; * Default: Off
1239;
1240; Ignore all variables with names starting with whitespace.
1241;
1242;suhosin.request.disallow_ws = Off
1243;
418 1244
1245; suhosin.upload.max_uploads
1246; --------------------------
1247; * Type: Integer
1248; * Default: 25
1249;
419; Defines the maximum number of files that may be uploaded with one request. 1250; Defines the maximum number of files that may be uploaded with one request.
1251;
420;suhosin.upload.max_uploads = 25 1252;suhosin.upload.max_uploads = 25
1253;
421 1254
1255; suhosin.upload.disallow_elf
1256; ---------------------------
1257; * Type: Boolean
1258; * Default: On
1259;
422; When set to On it is not possible to upload ELF executables. 1260; When set to On it is not possible to upload ELF executables.
423;suhosin.upload.disallow_elf = 1 1261;
1262;suhosin.upload.disallow_elf = On
1263;
424 1264
1265; suhosin.upload.disallow_binary
1266; ------------------------------
1267; * Type: Boolean
1268; * Default: Off
1269;
425; When set to On it is not possible to upload binary files. 1270; When set to On it is not possible to upload binary files.
426;suhosin.upload.disallow_binary = 0 1271;
1272;suhosin.upload.disallow_binary = Off
1273;
427 1274
1275; suhosin.upload.remove_binary
1276; ----------------------------
1277; * Type: Boolean
1278; * Default: Off
1279;
428; When set to On binary content is removed from the uploaded files. 1280; When set to On binary content is removed from the uploaded files.
429;suhosin.upload.remove_binary = 0 1281;
1282;suhosin.upload.remove_binary = Off
1283;
430 1284
1285; suhosin.upload.verification_script
1286; ----------------------------------
1287; * Type: String
1288; * Default:
1289;
431; This defines the full path to a verification script for uploaded files. The 1290; This defines the full path to a verification script for uploaded files. The
432; script gets the temporary filename supplied and has to decide if the upload 1291; script gets the temporary filename supplied and has to decide if the upload is
433; is allowed. A possible application for this is to scan uploaded files for 1292; allowed. A possible application for this is to scan uploaded files for viruses.
434; viruses. The called script has to write a 1 as first line to standard output 1293; The called script has to write a 1 as first line to standard output to allow
435; to allow the upload. Any other value or no output at all will result in the 1294; the upload. Any other value or no output at all will result in the file being
436; file being deleted. 1295; deleted.
1296;
437;suhosin.upload.verification_script = 1297;suhosin.upload.verification_script =
1298;
438 1299
439; Specifies the maximum length of the session identifier that is allowed. When 1300; suhosin.session.max_id_length
440; a longer session identifier is passed a new session identifier will be 1301; -----------------------------
441; created. This feature is important to fight bufferoverflows in 3rd party 1302; * Type: Integer
442; session handlers. 1303; * Default: 128
1304;
1305; Specifies the maximum length of the session identifier that is allowed. When a
1306; longer session identifier is passed a new session identifier will be created.
1307; This feature is important to fight buffer overflows in 3rd party session
1308; handlers.
1309;
443;suhosin.session.max_id_length = 128 1310;suhosin.session.max_id_length = 128
1311;
444 1312
445; Undocumented: Controls if suhosin coredumps when the optional suhosin patch 1313; suhosin.server.encode
446; detects a bufferoverflow, memory corruption or double free. This is only 1314; ---------------------
447; for debugging purposes and should not be activated. 1315; * Type: Boolean
448;suhosin.coredump = Off 1316; * Default: On
1317;
1318; Encode potentially dangerous characters in REQUEST_URI and QUERY_STRING with
1319; URL encoding.
1320;
1321;suhosin.server.encode = On
1322;
449 1323
450; Undocumented: Controls if the encryption keys specified by the configuration 1324; suhosin.server.strip
451; are shown in the phpinfo() output or if they are hidden from it 1325; --------------------
452;suhosin.protectkey = 1 1326; * Type: Boolean
1327; * Default: On
1328;
1329; Replace potentially dangerous characters in PHP_SELF, PATH_INFO,
1330; PATH_TRANSLATED and HTTP_USER_AGENT with '?'.
1331;
1332;suhosin.server.strip = On
1333;
453 1334
454; Controls if suhosin loads in stealth mode when it is not the only 1335; suhosin.rand.seedingkey
455; zend_extension (Required for full compatibility with certain encoders 1336; -----------------------
456; that consider open source untrusted. e.g. ionCube, Zend) 1337; * Type: String
457;suhosin.stealth = 1 1338; * Default:
1339;
1340; This string is added to the entropy pool for seeding the random number
1341; generator.
1342;
1343;suhosin.rand.seedingkey =
1344;
1345
1346; suhosin.rand.reseed_every_request
1347; ---------------------------------
1348; * Type: Boolean
1349; * Default: Off
1350;
1351; Controls if automatic reseeding of rand() / mt_rand() is done for every new
1352; request. Will improve security but decrease performance. In case the system's
1353; entry pool is exhausted, this flag may either significantly increase execution
1354; time or otherwise use less entropy (which is bad).
1355;
1356;suhosin.rand.reseed_every_request = Off
1357;
1358
1359; suhosin.srand.ignore
1360; --------------------
1361; * Type: Boolean
1362; * Default: On
1363;
1364; Flag that controls if calls to srand() are ignored in favour of Suhosin's own
1365; enhanced seeding - since 0.9.36 calls will trigger auto-reseeding.
1366;
1367;suhosin.srand.ignore = On
1368;
1369
1370; suhosin.mt_srand.ignore
1371; -----------------------
1372; * Type: Boolean
1373; * Default: On
1374;
1375; Flag that controls if calls to mt_srand() are ignored in favour of Suhosin's
1376; own enhanced seeding - since 0.9.36 calls will trigger auto-reseeding.
1377;
1378;suhosin.mt_srand.ignore = On
1379;
458 1380
459; Controls if suhosin's ini directives are changeable per directory
460; because the admin might want to allow some features to be controlable
461; by .htaccess and some not. For example the logging capabilities can
462; break safemode and open_basedir restrictions when .htaccess support is
463; allowed and the admin forgot to fix their values in httpd.conf
464; An empty value or a 0 will result in all directives not allowed in
465; .htaccess. The string "legcprsum" will allow logging, execution, get,
466; post, cookie, request, sql, upload, misc features in .htaccess
467;suhosin.perdir = "0"