dolibarr 23.0.3
test_csrf.php
1<?php
2//define("NOLOGIN",1); // This means this output page does not require to be logged.
3//if (!defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1');
4//if (!defined('NOREQUIREDB')) define('NOREQUIREDB', '1');
5if (!defined('NOREQUIRESOC')) {
6 define('NOREQUIRESOC', '1');
7}
8//if (!defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1');
9if (!defined('NOSTYLECHECK')) {
10 define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data
11}
12//if (!defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu
13//if (!defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php
14//if (!defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library
15if (!defined("NOLOGIN")) {
16 define("NOLOGIN", '1'); // If this page is public (can be called outside logged session)
17}
18
19// Load Dolibarr environment
20require '../../main.inc.php';
30// Security
31if (!empty($dolibarr_main_prod) || empty($dolibarr_main_test)) {
33}
34
35
36/*
37 * View
38 */
39
40header("Content-type: text/html; charset=UTF8");
41
42// Security options
43header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on)
44header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks)
45?>
46
47This is a form to test if a CSRF exists into a Dolibarr page.<br>
48<br>
49- Change url to send request to into this file (URL to a hard coded page on a server B)<br>
50- Open this form into a virtual server A.<br>
51- Send the request to the virtual server B by clicking submit.<br>
52- Check that Anticsrf protection is triggered.<br>
53
54<br>
55<?php
56 $urltosendrequest = "http://127.0.0.1/dolibarr/htdocs/user/group/card.php";
57 print 'urltosendrequest = '.$urltosendrequest.'<br><br>';
58?>
59
60Test post
61<form method="POST" action="<?php echo $urltosendrequest; ?>" target="_blank">
62<!-- <input type="hidden" name="token" value="123456789"> -->
63<input type="text" name="action" value="add">
64<input type="text" name="nom" value="New group test">
65<input type="submit" name="submit" value="Submit">
66</form>
67
68
69Test logout
70<html>
71 <body>
72 <script>history.pushState('', '', '/')</script>
73 <form action="http://localhostgit/dolibarr_dev/htdocs/user/logout.php">
74 <input type="submit" value="Submit request" />
75 </form>
76 <script>
77 document.forms[0].submit();
78 </script>
79 </body>
80</html>
if(preg_match('/(crypted|dolcrypt):/i', $dolibarr_main_db_pass)||!empty($dolibarr_main_db_encrypted_pass)) $conf db type
'integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]',...
Definition repair.php:125
$conf db name
Only used if Module[ID]Name translation string is not found.
Definition repair.php:128
accessforbidden($message='', $printheader=1, $printfooter=1, $showonlymessage=0, $params=null)
Show a message to say access is forbidden and stop program.