PrestaShop管理员指南 - 建立基本的认证/让你的PrestaShop更安全/调试和性能/提升你的PrestaShop性能/

建立基本的认证(.htaccess)

为了更好地保护你的PrestaShop,我们需要对管理目录(admin)建立基本的认证机制。.htaccess文件的一个目的就是保护你指定的录及其子目录。但请注意,基本上这个方式只适合运用在Apache服务器上。请先确认你的WEB服务器支持此方式。为了实现基本的认证机制,我们需要在你指定的目录下增加一个.htaccess文件,比如/var/www/prestashop/admin:
AuthUserFile /var/www/.prestashop_admin AuthName "Prestashop Admin Access" AuthType Basic Require valid-user Options -Indexes 说明:
  • AuthUserFile: 定义了包含着允许访问的用户及其密码的文件。.prestashop_admin是一个文本文件。
  • AuthName: 定义了弹出认证窗口时显示的信息。
  • AuthType: 定义了认证类型。
  • Require: 为了访问内容需要用户首先登录。valid-user 方式说明允许多用户访问此目录。
  • Options: 定了目录选项。-Indexes d如果目录没有可用的i索引文件的话,禁止自动产生目录索引。
下面是一个.prestashop_admin文件的例子,包含登录用户名和密码:
login1:$apr1$/wJeliK8$e9OzgRaVL8J8wSsFBXjor1 login2:$apr1$yV65Kqqz$cFt3sV2.Q7hhLRRUJDo5a/ 这个文件包含了允许访问目录的用户名和加密的密码。一般为了加密,你可以参考这个链接:.htpasswd file generation. 强烈建议你把此文件保存在WEB应用访问不到的目录。具体的有关.htacceess文件的说明,请自己谷哥和度娘~

让你的PrestaShop更安全

下面是按照重要度排列的推荐配置
  • 让你的后台更安全
    • 重命名你的/admin文件夹。这是一个强制要求,如果你不重命名的话,就无法访问你的管理后台。确保你起了一个独特的名字,理想状态是包含数字和字符,比如"my4dm1n"。
    • 用.htaccess和.htpasswd文件保护你的admin文件夹,或者要求你的主机服务提供商协助你。
    • 不要让你的浏览器记住你的密码(cookie或者其他密码助手)。
    • 使用复杂的密码,包含字母、数字甚至特殊字符,比如 "5r3XaDR#"。你可以使用密码生成器,比如 PCTools′s或者GRC′s.
  • 强化你的PHP的安全性
    • 请参考在本指南开头的有关PHP必须和推荐的配置。
  • 在安装或者升级PrestaShop之后,立刻删除/install文件夹。
  • 删除那些在生产环境没用的文件,比如:
    • 所有的readme_xx.txt文件。
    • CHANGELOG文件。
    • /docs文件夹。
  • 用一个设为如下配置的.htaccess文件,禁止对你的主题文件/模板的访问:
    <FilesMatch ".tpl$"> order deny,allow deny from all </FilesMatch>

调试和性能

这一节将会帮助你更好地理解那些不在后台而是在配置文件中的配置变量: PrestaShop共有4个配置文件,都在/config文件夹:
  • config.inc.php: 核心配置文件
  • defines.inc.php: 定义了PrestaShop的所有常量
  • settings.inc.php: 定义了访问数据库的信息以及PrestaShop的版本号
  • smarty.config.inc.php: 定义了所有和Smarty(PrestaShop模板/主题引擎)相关的配置

【config.inc.php文件】

生产环境::
  • 确保@ini_set(′display_errors′, ′Off′);OFF
  • 确保 define(′PS_DEBUG_SQL′, false);FALSE
相反的,在开发/测试环境:
  • 开启@ini_set(′display_errors′, ′Off′);ON
  • 开启efine(′PS_DEBUG_SQL′, false);TRUE

【defines.inc.php文件】

除了定义一些常量,此文件还包含了所有文件和文件夹的路径。因此如果你需要更新此文件的时候,请务必保留一个原始版本。

【smarty.inc.php文件】

  • $smarty->caching = false;: Smarty的缓存系统必须被设为无效,因为和PrestaShop不兼容
  • 重要: 在生产环境,$smarty->force_compile 必须被设为"false",这可以给页面加载带来30%的性能提升。另外,当编辑.tpl文件时,你需要删除/tools/smarty/compile 文件夹(除了 idex.php) in 来立刻确认改变。提醒,这个设置能够在后台配置: "Preferences" > "Performance">"Smarty"
  • $smarty->compile_check需要被设为false
  • $smarty->debugging给你调试Smarty的信息.

提升你的PrestaShop性能

下面是提升PrestaShop性能的一些Tips:
  • 开启MySQL的缓存(或者要求你的主机服务商提供),并设一个比较高的值(比如,256M)。
  • 在生产环境,不要忘记设置$smarty->force_compile为"false"。
  • 只要可能,就使用opcode cache机制来减轻服务器的进程负载。PrestaShop兼容eAccelerator. Opcode 意味着"operation code",具体请自己谷哥或者度娘~
  • 如果可能的话,将你的静态元素设置到不同的域名或者子域名,以取得并行的HTTP链接。下面是一个配置的例子,编辑/config/defines.inc.php 文件。
if ( $_SERVER[′REMOTE_ADDR′] != ′127.0.0.1′ ) { define( ′_THEME_IMG_DIR_′, ′http://img2.xxx.com/′ ); define( ′_THEME_CSS_DIR_′, ′http://css.xxx.com/′ ); define( ′_THEME_JS_DIR_′, ′http://js.xxx.com/′ ); define( ′_THEME_CAT_DIR_′, ′http://img1.xxx.com/c/′ ); define( ′_THEME_PROD_DIR_′, ′http://img1.xxx.com/p/′ ); define( ′_THEME_MANU_DIR_′, ′http://img1.xxx.com/m/′ ); define( ′_PS_IMG_′, ′http://img1.xxx.com/′ ); define( ′_PS_ADMIN_IMG_′, ′http://img1.xxx.com/admin/′ ); } else { define( ′_THEME_IMG_DIR_′, _THEMES_DIR_ . _THEME_NAME_ . ′/img/′ ); define( ′_THEME_CSS_DIR_′, _THEMES_DIR_ . _THEME_NAME_ . ′/css/′ ); define( ′_THEME_JS_DIR_′, _THEMES_DIR_ . _THEME_NAME_ . ′/js/′ ); define( ′_THEME_CAT_DIR_′, __PS_BASE_URI__ . ′img/c/′ ); define( ′_THEME_PROD_DIR_′, __PS_BASE_URI__ . ′img/p/′ ); define( ′_THEME_MANU_DIR_′, __PS_BASE_URI__ . ′img/m/′ ); define( ′_PS_IMG_′, __PS_BASE_URI__ . ′img/′ ); define( ′_PS_ADMIN_IMG_′, _PS_IMG_.′admin/′ ); }

其他推荐的配置

【安全模式】

在最新的PHP版本中,PHP的安全模式已经不被推荐,不应该再被使用。尤其是PrestaShop, 开启安全模式会导致支付模块失效。

【升级】

你的应用的PHP代码是使你服务器脆弱的因素。尤其强烈建议你更新你的服务器的应用,PHP、 ySQL、 Apache和其他。
2012年10月1日于南昌