Magento是很多公司都在使用的一种电子商务软件平台,其社区版是一款免费可用的开源程序。由于大量第三方开发的插件和主题扩展了默认功能和设计,Magento正在逐渐成为电子商务行业的WordPress。
然而,越来越受欢迎的Magento给了黑客们一个觊觎这个电子商务平台足够充分的理由。尤其是如果你经营一家使用Magento平台的网店,你拥有的很重要、很敏感的客户信息,在黑客眼里就是异常宝贵的商品。因而,你有必要做好全面的摸底工作,采取最佳实践,确保Magento部署系统的每个部分的安全。
在本教程中,我们将探讨Magento安全方面的最佳实践,并通过几个例子教你如何确保Magento网站的安全。
1. 为Magento管理员帐户选择一个强大、安全的密码。
确保安装的Magento系统安装可靠,第一步就是为Magento管理员帐户设置一个强密码。确保管理员的密码长度至少是十个随机字符,包括数字、大小写字母和特殊字符(比如“q&t:A;-Q&4"?>#6”)。删除不使用的其他任何帐户。拥有的帐户数量越少,黑客得手的机会就越小。
2. 为所有的Magento网页使用加密连接(SSL/HTTPS)。
SSL是一种对于从Web浏览器发送到Web服务器的敏感信息加密的安全协议,比如登录信息、个人信息等。想在你的Magento网站上实施SSL,先要获得一份SSL证书(比如从Let"s Encrypt获得)。有了获得的证书后,配置Web服务器,以便侦听端口443,并通过Magento管理后端来启用SSL。
比如说,如果你在基于Debian的服务器上使用Apache,应创建一个新的虚拟主机:
# vi /etc/apache2/sites-available/your-domain.com-ssl.conf
添加下面几行:
- <IfModule mod_ssl.c>
- <VirtualHost *:443>
- ServerName your-domain.com
- DocumentRoot /var/www/html/magento/
- SSLEngine on
- #Specify the path to your SSL certificate file:
- SSLCertificateFile /etc/apache2/ssl/your-domain.crt
- #Specify the path to private key file:
- SSLCertificateKeyFile /etc/apache2/ssl/your-domain.key
- #Specify the path to CA certificate:
- SSLCACertificateFile /etc/apache2/ssl/ca-bundle.crt
- <Directory /var/www/html/magento>
- Options -Indexes +FollowSymLinks +MultiViews
- Order allow,deny
- AllowOverride All
把"admin"换成较为复杂的名称,比如"MyMagento123"或者你希望管理员后端的URL具有的任何名称。这会将管理员URL变换成"yourstore.com/store/MyMagento123"。
4. 将获准拥有管理员访问权的IP地址加入白名单。
除了像上面那样隐藏管理员URL外,你还可以在网络层面限制对管理员URL的访问。换句话说,将管理员访问权限制在你明确许可的仅仅几个IP地址或CIDR段。想为Apache创建一份IP白名单,将下面这个LocationMatch指令添加到你的虚拟主机配置里面。请注意:"MyMagento123"是你之前定义的自定义管理员登录页面。
- <LocationMatch "MyMagento123">
- Order Deny,Allow
- Deny from All
- Allow from 111.111.111.0/24