Zen Cart的旧版本(V1.3.0,1.3.0.1,1.3.0.2)中,有一个黑客帝国宣布的代码漏洞。即使在后续版本中已被修复,黑客新手仍在继续试图寻找有漏洞的网站,因此还是会浪费你的时间和精力去担忧。他们的访问也在试图浪费网站服务器的一些资源。
此外,有一些SQL攻击悬浮在互联网周边,试图在漏统系统中发现可利用的漏洞。Zen Cart的当前版本对所有已知的漏洞有免疫力了。然而,有时甚至是“企图”在黑客上可以显示在服务器日志和whos-online entries(即使失败了),也可以是迷惑甚至震惊一些店主。因此,下面的代码改变可以提供一些平和的心态:
如果使用Zen Cart的1.3.x版本,添加以下内容到/includes/application_top.php 文件的顶部,有助于忽略这些游客和他们企图消耗系统资源的访问:
/includes/application_top.php
contains: "<?php"的第一行
在第二行的开头添加这个:
/**
* inoculate against hack attempts which waste
CPU cycles
*/
$contaminated =
(isset($_FILES['GLOBALS']) || isset($_REQUEST['GLOBALS'])) ? true : false;
$paramsToAvoid =
array('GLOBALS', '_COOKIE', '_ENV', '_FILES', '_GET', '_POST', '_REQUEST',
'_SERVER', '_SESSION', 'HTTP_COOKIE_VARS', 'HTTP_ENV_VARS', 'HTTP_GET_VARS',
'HTTP_POST_VARS', 'HTTP_POST_FILES', 'HTTP_RAW_POST_DATA', 'HTTP_SERVER_VARS',
'HTTP_SESSION_VARS');
$paramsToAvoid[] =
'autoLoadConfig';
$paramsToAvoid[] =
'mosConfig_absolute_path';
$paramsToAvoid[] = 'hash';
$paramsToAvoid[] = 'main';
foreach($paramsToAvoid as
$key) {
if (isset($_GET[$key]) || isset($_POST[$key])
|| isset($_COOKIE[$key])) {
$contaminated = true;
break;
}
}
$paramsToCheck =
array('main_page', 'cPath', 'products_id', 'language', 'currency', 'action',
'manufacturers_id', 'pID', 'pid', 'reviews_id', 'filter_id', 'zenid', 'sort',
'number_of_uploads', 'notify', 'page_holder', 'chapter', 'alpha_filter_id',
'typefilter', 'disp_order', 'id', 'key', 'music_genre_id', 'record_company_id',
'set_session_login', 'faq_item', 'edit', 'delete', 'search_in_description',
'dfrom', 'pfrom', 'dto', 'pto', 'inc_subcat', 'payment_error', 'order',
'gv_no', 'pos', 'addr', 'error', 'count', 'error_message', 'info_message',
'cID', 'page', 'credit_class_error_code');
if (!$contaminated) {
foreach($paramsToCheck as $key) {
if (isset($_GET[$key]) &&
!is_array($_GET[$key])) {
if (substr($_GET[$key], 0, 4) == 'http'
|| strstr($_GET[$key], '//')) {
$contaminated = true;
break;
}
if (isset($_GET[$key]) &&
strlen($_GET[$key]) > 43) {
$contaminated = true;
break;
}
}
}
}
unset($paramsToCheck,
$paramsToAvoid, $key);
if ($contaminated)
{
header('HTTP/1.1 406 Not Acceptable');
exit(0);
}
unset($contaminated);
/* *** END OF INNOCULATION
*** */
使用此代码不会影响好的访问者,例如搜索引擎,只要他们试图访问的是你网站上的合法内容。它只阻止恶意的行为。
适用于Zen
Cart的版本:1.3.0, 1.3.0.1, 1.3.0.2, 1.3.5, 1.3.6., 1.3.7, 1.3.8.
此建议修改代码(或它的变体)纳入Zen Cart v1.3.9及更高的版本。 |