MRBS 1.12.2 等保2.0二级整改完整提交

包含:登录失败锁定、90天密码有效期、30分钟会话超时、
强制改密、登录审计日志、屏幕水印、企业背景图、
备案信息固定底部、favicon、JS空集合保护、
会话过期体验优化(403 JSON)、display_errors 关闭、
固定 key 根治 Integrity check failed 等全部改动

注意:config.inc.php/.htaccess/.user.ini 含敏感信息,
通过 .gitignore 排除,勿推送到公开仓库。
This commit is contained in:
人事系统开发
2026-09-09 16:55:02 +08:00
commit 1ba6efd8ed
2151 changed files with 528780 additions and 0 deletions
+138
View File
@@ -0,0 +1,138 @@
<?php
declare(strict_types=1);
namespace MRBS;
// Generates the HTML for a <script> element
function script_html(string $src, bool $add_version=false) : string
{
$html = '<script src="';
$value = ($add_version) ? add_version($src) : $src;
$html .= escape_html($value);
$html .= "\"></script>\n";
return $html;
}
global $area;
global $multisite, $site;
global $debug;
global $custom_js_url;
$page = this_page(false, '.php');
// We need to construct a standard query string that can be passed to the *.js.php
// pages. That's because some of the settings they use are area dependent.
// We also want the area to be in the query string so that the JavaScript page is
// cached if the area is the same and not otherwise.
$query_string = "area=$area";
if ($multisite && isset($site) && ($site !== ''))
{
$query_string .= '&site=' . urlencode($site);
}
// Load the init file now so that it gets executed as soon as possible. The init
// file can't use jQuery.
echo script_html('js/init.js.php', true);
echo script_html(($debug) ? 'jquery/jquery-3.7.1.js' : 'jquery/jquery-3.7.1.min.js');
// We need the migration script now that we are running jQuery 3.0+, or at least
// until we are confident that our JavaScript is not using any features that have
// been removed. The uncompressed version will output warnings about removed and
// deprecated features to the console
echo script_html(($debug) ? 'jquery/jquery-migrate-3.5.0.js' : 'jquery/jquery-migrate-3.5.0.min.js');
// We are using the jQuery UI library, which has been custom-built to include the following components:
// - Core
// - as defined by dependencies in order to support the required interactions and widgets
// - no need for jQuery 1.8 support
//
// - Interactions
// - Draggable
// - Resizable
//
// - Widgets
// - Autocomplete
// - Button
// - Dialog
// - Menu
// - Mouse
// - Tabs
//
// - Cupertino theme
// If you need any other components you will need to rebuild the custom UI library
// See http://jqueryui.com/
echo script_html(($debug) ? 'jquery/ui/jquery-ui.js' : 'jquery/ui/jquery-ui.min.js', true);
// All pages
echo script_html("js/functions.js.php?$query_string", true);
echo script_html("js/general.js.php?$query_string", true);
echo script_html("js/flatpickr/flatpickr.min.js", true);
$datepicker_src = "js/datepicker.js.php?$query_string";
$flatpickr_lang_path = Language::getInstance()->getFlatpickrLangPath();
if (isset($flatpickr_lang_path))
{
// Add the localisation file
echo script_html($flatpickr_lang_path, true);
// And give the datepicker file a query string parameter to force the browser cache
// to be flushed when the language changes.
$datepicker_src .= '&lang=' . urlencode(Language::getFlatpickrProperty($flatpickr_lang_path));
}
echo script_html($datepicker_src, true);
echo script_html("jquery/select2/dist/js/select2.full.min.js", true);
if (null !== ($select2_lang_path = Language::getInstance()->getSelect2LangPath()))
{
echo script_html($select2_lang_path, true);
}
// dataTables initialisation
if (in_array($page, array('admin', 'edit_users', 'pending', 'report', 'search', 'view_entry')))
{
// Include the JavaScript for those pages that use dataTables
// When constructing the DataTables download we want to include the following:
// DataTables styling framework
// DataTables package
// Buttons, and all sub-options
// ColReorder
// FixedColumns
echo script_html(($debug) ? 'jquery/datatables/datatables.js' : 'jquery/datatables/datatables.min.js', true);
echo script_html('jquery/datatables/plugins.js', true);
echo script_html("js/datatables.js.php?$query_string", true);
}
// Get any page specific JavaScript
if (is_readable("js/$page.js"))
{
echo script_html("js/$page.js?$query_string", true);
}
if (is_readable("js/$page.js.php"))
{
echo script_html("js/$page.js.php?$query_string", true);
}
// The day, week and month views do refresh by Ajax.
// We need the resizable bookings for the day and week views
if ($page == 'index')
{
echo script_html("js/refresh.js.php?$query_string", true);
echo script_html("js/resizable.js.php?$query_string", true);
}
if (isset($custom_js_url))
{
echo script_html($custom_js_url, true);
}
// Include the HTML5 Shiv so that elements such as <header> etc. can be styled in IE8 and below.
// (Even though we don't support IE8 and below, we still need the HTML5 Shiv for styling the
// page which says we don't support them!).
echo "<!--[if lte IE 8]>\n";
echo script_html(($debug) ? 'js/html5shiv.js' : 'js/html5shiv.min.js', true);
echo "<![endif]-->\n";