有没有一种方法可以找到正在使用的Magento版本而无需访问服务器端代码?
例如,此插件如何工作
https://chrome.google.com/webstore/detail/magento-version-check/aekpbnbbbgocohlbdpdfgghamedmplal
我的想法是检查LICENSE.txt
或LICENSE_EE.txt
。您至少可以确定CE与EE。
您还可以使用默认的版权年份styles.css
来进行猜测。
还有谁知道更好的方法吗?
有没有一种方法可以找到正在使用的Magento版本而无需访问服务器端代码?
例如,此插件如何工作
https://chrome.google.com/webstore/detail/magento-version-check/aekpbnbbbgocohlbdpdfgghamedmplal
我的想法是检查LICENSE.txt
或LICENSE_EE.txt
。您至少可以确定CE与EE。
您还可以使用默认的版权年份styles.css
来进行猜测。
还有谁知道更好的方法吗?
Answers:
中的版权声明/skin/frontend/default/default/css/styles.css
已经是一个很好的指示。
这些是Magento CE的不同版权声明:
Version @copyright
------------------------------------------------------------------------------------------------
Magento 1.9 Copyright (c) 2006-2014 X.commerce, Inc. (http://www.magento.com)
Magento 1.8 Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
Magento 1.7 Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
Magento 1.6 Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
Magento 1.4.1-1.5 Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
Magento 1.4.0 Copyright (c) 2009 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
Magento 1.0-1.3 Copyright (c) 2008 Irubin Consulting Inc. DBA Varien (http://www.varien.com)
为了区分1.4和1.5,您应该对文件进行实际的比较。GitHub上的此镜像存储库可能有帮助:
对于Magento 2商店,只要Magento_Version
未禁用该模块,就可以在银色板上获得该版本。只是参观shop-domain.tld/magento_version
。输出示例:
Magento/2.1 (Community)
但是,没有有关确切补丁程序版本的信息。
如果版本模块被禁用或对该URL的访问被阻止,您还可以检查默认样式表,例如/static/frontend/Magento/blank/en_US/css/print.css
。但是直到现在,版权声明还不能说明:
Version @copyright
------------------------------------------------------------------------------------------------
Magento 2.0 Copyright © 2016 Magento.
Magento 2.1 Copyright © 2016 Magento.
如果商店仍然安装了Magento Connect模块,并且没有故意阻止该URL公开访问,则只能访问http://www.website.com / downloader,该版本将按照此图像显示在底部。
从技术上讲,我认为这是Downloader软件包的版本,但我从未见过它与总体Magento版本不匹配。
public static function getVersionInfo()
有一个显示版本的数组。我猜这个版本也对应于Magento版本。
您可以使用公共文件(图像,css,js)的MD5哈希值来识别版本。
该存储库具有哈希列表中的文件js
,media
和skin
文件夹。
这是其中的独特哈希 json
格式
{
"skin/adminhtml/default/default/boxes.css": {
"6aefb246b1bb817077e8fca6ae53bf2c": "CE 1.2.0, CE 1.2.0.1, CE 1.2.0.2, CE 1.2.0.3",
"84b67457247969a206456565111c456b": "CE 1.1.2, CE 1.1.3, CE 1.1.4",
"0902e89fb50b22d44f8242954a89300c": "EE 1.12.0.0",
"8a5c088b435dbcf1bbaac9755d4ed45f": "EE 1.12.0.1, EE 1.12.0.2",
"1cbeca223c2e15dcaf500caa5d05b4ed": "CE 1.7.0.0",
"d0511b190cdddf865cca7873917f9a69": "CE 1.1.1",
"a2c7f9ddda846ba76220d7bcbe85c985": "CE 1.2.1, CE 1.2.1.1, CE 1.2.1.2"
},
"js/mage/adminhtml/sales.js": {
"a86ad3ba7ab64bf9b3d7d2b9861d93dc": "CE 1.0",
"d80c40eeef3ca62eb4243443fe41705e": "CE 1.5.0.1",
"95e730c4316669f2df71031d5439df21": "CE 1.1.0",
"bdacf81a3cf7121d7a20eaa266a684ec": "CE 1.5.1.0",
"ba43d3af7ee4cb6f26190fc9d8fba751": "EE 1.14.1.0",
"c8dd0fd8fa3faa9b9f0dd767b5a2c995": "CE 1.9.1.1",
"4422dffc16da547c671b086938656397": "CE 1.4.2.0",
"0e400488c83e63110da75534f49f23f3": "CE 1.3.2, CE 1.3.2.1, CE 1.3.2.2, CE 1.3.2.3, CE 1.3.2.4",
"48d609bb2958b93d7254c13957b704c4": "CE 1.6.1.0, CE 1.6.2.0",
"40417cf4bee0e99ffc3930b1465c74ae": "EE 1.11.2.0",
"5656a8c1c646afaaf260a130fe405691": "CE 1.8.1.0",
"17da0470950e8dd4b30ccb787b1605f5": "CE 1.1.5, CE 1.1.6",
"aeb47c8dfc1e0b5264d341c99ff12ef0": "EE 1.11.0.2",
"ec6a34776b4d34b5b5549aea01c47b57": "EE 1.10.0.2",
"a0436f1eee62dded68e0ec860baeb699": "CE 1.9.1.0",
"5112f328e291234a943684928ebd3d33": "CE 1.1.7, CE 1.1.8",
"7ca2e7e0080061d2edd1e5368915c267": "EE 1.10.1.1",
"a4296235ba7ad200dd042fa5200c11b0": "CE 1.6.0.0",
"9a5d40b3f07f8bb904241828c5babf80": "EE 1.13.1.0",
"3fe31e1608e6d4f525d5db227373c5a0": "EE 1.13.0.0, EE 1.13.0.2",
"26c8fd113b4e51aeffe200ce7880b67a": "CE 1.8.0.0",
"839ead52e82a2041f937389445b8db04": "CE 1.3.3.0",
"d1bfb9f8d4c83e4a6a826d2356a97fd7": "CE 1.3.1, CE 1.3.1.1"
},
"js/mage/adminhtml/product.js": {
"e887acfc2f7af09e04f8e99ac6f7180d": "CE 1.3.0"
},
"skin/frontend/rwd/default/css/styles.css": {
"bf6c8e2ba2fc5162dd5187b39626a3a0": "CE 1.9.0.1",
"5373978891051983da47ac5064b4b2b9": "EE 1.14.0.1",
"8a874fcb6cdcb82947ee4dbbe1822f3e": "CE 1.9.0.0",
"bd66fd43fecd7ca1e293226bb11e1658": "EE 1.14.0.0"
},
"js/prototype/validation.js": {
"295494d0966637bdd03e4ec17c2f338c": "CE 1.4.1.0",
"d3252becf15108532d21d45dced96d53": "CE 1.4.1.1"
},
"js/mage/adminhtml/tools.js": {
"86bbebe2745581cd8f613ceb5ef82269": "CE 1.7.0.1, CE 1.7.0.2",
"ea81bcf8d9b8fcddb27fb9ec7f801172": "CE 1.3.2.2",
"d594237950932b9a3948288a020df1ba": "CE 1.3.2.3, CE 1.3.2.4, CE 1.3.3.0"
},
"js/lib/flex.js": {
"4040182326f3836f98acabfe1d507960": "CE 1.4.0.1",
"eb84fc6c93a9d27823dde31946be8767": "CE 1.4.0.0"
}
}
例如,如果我们测试演示的Magento商店
$ curl -s http://demo.magentocommerce.com/skin/frontend/rwd/default/css/styles.css | md5
8a874fcb6cdcb82947ee4dbbe1822f3e
我们看到哈希对应于CE 1.9.0.0
。
用PHP它可能看起来像
$url = 'http://demo.magentocommerce.com/';
foreach ((array)json_decode(file_get_contents('hashes.json')) as $file => $hash) {
$md5 = md5(file_get_contents($url . $file));
if (isset($hash[$md5])) {
echo $hash[$md5];
break;
}
}
请注意,如果文件缩小,打补丁,具有不同的行尾等,则此方法可能不起作用。
不,如果将其公开发布会很糟糕。安全方面,最好不要告诉所有人所有内容。
有时前端功能会给您一个很好的猜测。因为某些功能是从版本x开始才实现的。或以特定于版本的方式构建路径。
模块也是如此,如果它们具有特定的前端功能,并且路由器指向它们或使用类名,则很容易猜到。
您可以通过以下方式来做到这一点(所有人都需要一定级别的访问权限):
app/Mage.php
)并检查app/etc/modules
我曾经magescan
确定过远程的Magento版本:
https://github.com/steverobbins/magescan
它还可以扫描补丁程序级别,服务器信息,已安装的模块,目录,站点地图,无法访问的路径,当然还有版本。这是一个PHP Phar,可以与composer一起安装。
典型用法:
$ magescan.phar scan:all store.example.com