Глава 6. Добавление профессионального штриха к вашему сайту

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Надежда А
  • Иконка
  • Группа: Администратор
  • Сообщений: 50
  • Регистрация: 12.12.2010

29.03.2011 00:02

В этой главе мы рассмотрим:
  • Установку Magento 1.4 в PHP 5.3.2 (без mcrypt)

  • Оптимизацию Magento магазина под поисковые системы

  • Реализацию PayPal Website Payments Pro и Express Checkout в Magento

  • Предотвращение CSRF атаки в Magento



Введение

В этой главе мы будем готовить несколько классных рецептов на различные важные темы, которые относятся к тренду сокращения края (to cutting edge trend) и назойливой рекламы технологии (tech hypes). Вы найдете его полезным, пока юудете работать на коммерческом проекте на Magento для серьезного бизнеса.


Установка Magento 1.4 в PHP 5.3.2 (без mcrypt)

Magento контролирует криптографию с mcrypt модулем. К сожалению, в PHP 5.3.x mcrypt модули не поставляются вместе с ним из-за некоторых вопросов лицензирования в США. Если вы попытаетесь установить Magento без установленной mcrypt в вашем окне, он не позволит вам сделать это. Это действительно блокирует выпуск (issue). Без Mcrypt если вы попытаетесь установить Magento. вы должны увидеть страницу, подобную этой:

Прикрепленное изображение: 1.png

В этом рецепте мы будем писать новый плагин для Magento для обработки криптографии вместо Mcrypt. Для этого мы будем использовать Base64.


Подготовка

Запустите ваш любимый PHP IDE (в моем случае, это NetBeans) и откройте проект Magento.


Как это сделать?

Давайте создадим список, необходимых для выполнения задачи:
1. Откройте файл Object.php из / Lib / Varien / каталога, и найдите следующее:
public function __toString(array $arrAttributes = array(),
$valueSeparator=',')
2. К сожалению, на PHP 5.3.x и далее, __toString метод не принимает или позволяет любой параметр. Вот почему мы должны заменить предыдущую строку на:
public function __invoke(array $arrAttributes = array(),
$valueSeparator=',')

Если ваш код Magento версии уже закомментировал __toString метод, вы можете пропустить шаг 1 и 2.
3. Теперь откройте файл index.php и установите уровень сообщений об ошибках как:
error_reporting(E_ALL ^ E_DEPRECATED);
4. Сейчас мы будем модифицировать проверку Mcrypt требования для установки Magento. Откройте app/code/core/Mage/Install/etc/install.xml и найдите check | php| extensions в XML навигаторе. Блок PHP следует читать следующим образом:

<php>
<extensions>
<spl/>
<dom/>
<simplexml/>
<pdo_mysql/>
<mcrypt/>
<hash/>
<curl/>
<iconv/>
<ctype/>
<gd/>
</extensions>
</php>


5. Измените предыдущий код и внесите изменения в следующем. Мы должны закомментировать строку, в которой находится Mcrypt. Мы на самом деле закомментировали строку № 84:
<php>
<extensions>
<spl/>
<dom/>
<simplexml/>
<pdo_mysql/>
<!--<mcrypt/>-->
<hash/>
<curl/>
<iconv/>
<ctype/>
<gd/>
</extensions>
</php>

6. Сохраните этот файл как install.xml.
7. Давайте создадим новый плагин для использования Base64 вместо Mcrypt. Создайте новый файл в lib/Varien/Crypt/ каталоге, как Base64.php, и вложите в него следующий код:
<?php
/**
* Base64 plugin
*
* @category Varien
* @package Varien_Crypt
* @author Nurul Ferdous <nurul.ferdous@gmail.com>
*/
class Varien_Crypt_Base64 extends Varien_Crypt_Abstract
{
/**
constructor
*
@param array $data
*/
public function __construct(array $data=array())
{
parent::__construct($data);
}
/**
Initialize base64 module
*
@param string $key cipher private key
@return Varien_Crypt_Mcrypt
*/
public function init($key)
{
return $this;
}
/**
Encrypt data
*
@param string $data source string
@return string
*/
public function encrypt($data)
{
if (!strlen($data)) {
return $data;
}
return base64_encode($data);
}
/**
Decrypt data
*
@param string $data encrypted string
@return string
*/
public function decrypt($data)
{
if (!strlen($data)) {
return $data;
}
return base64_decode($data);

}
}

8. Мы на последнем этапе сейчас. Найдите файл Crypt.php из каталога /lib/Varien/ и замените:
static public function factory($method='mcrypt')
На:
static public function factory($method='base64')
9. Теперь запустите установку Magento, и вы должны хорошо идти! Никто не будет спрашивать у вас Mcrypt больше


Как это работает...

Мы уже знаем, что Magento использует Mcrypt расширение для обработки его криптографии. Мы написали новый плагин под названием Base64.php и направили его в окружение Magento для использования вместо Mcrypt.
В некоторых случаях версия PHP 5.3 не имеет установленного Mcrypt расширения. Если нам нужно установить без Mcrypt, то мы застряли, т.к. Magento имеет зависимость от него. Magento определила эту зависимость в xml -файле, расположенном в каталоге app/code/core/Mage/Install/etc/ как install.xml. В строке № 84 мы прокомментировали линию. Это позволит вам обойти проверку зависимости.
Кто будет затем обрабатывать криптографию? Именно поэтому мы создали новый плагин подщ именем Base64.php в lib/Varien/Crypt/ каталоге. Наконец, мы сказали Magento, что Crypt factory метод – это Base64 (не Mcrypt больше). Мы сделали это в файле ib/Varien/Crypt.php, номер строки 43.


Больше...

Есть и другие подходящие расширения криптографии доступные в PHP, такие как Crack, Hash, Mhash и OpenSSL. Вы можете создать свой собственный плагин для обработки криптографии в Magento. Мы просто стараемся показать вам простой путь, чтобы сделать свой собственный плагин. Шаги будут очень похожи на этот рецепт для создания плагина с Crack, Hash, Mhash или OpenSSL. Для более подробной информации о криптографии в PHP вы должны прочитать это: http://php.net/manua...refs.crypto.php


Дальнейшая безопасность

Для жизни приложения я хотел бы предложить вам создать PHP из исходного кода (источника) с Mcrypt расширением. Если вы настаиваете на использовании Base64, вы должны добавить свои собственные меры безопасности для обеспечения безопасности.


Оптимизация Magento магазина для поисковых систем

Magento является одной из наиболее дружественных поисковых платформ электронной коммерции. Мы можем получили бы максимальную отдачу от нее, если бы мы могли правильно оптимизировать наш Magento магазин для SEO. В этом рецепте мы будем следовать некоторым детским шагам и оптимизировать наш Magento магазин.


Как это сделать?

Magento сегментировала SEO настройки в ее различные разделы. Мы настроим эти параметры из следующих шагов:
1. Самый первый шаг - войти в свой бэкэнд Magento и перейти к System |Configuration | Web | Search Engines Optimization и установить Use Web Server на Yes.
2. В разделе Url Options установить Add Store Code to Urls как No и Redirect to Base URL if requested URL doesn't match it на Yes.
3. На этом шаге мы установим настройки Magento заголовка. Давайте перейдем на страницу System | Configuration | Design | HTML Head и введем текст следующим образом:




ЛейблЗначение
Default Title (Стандартный заголовок)Packt Publishing Technical &amp; IT Book Store
Title Prefix (Префикс заголовка)Держите его пустым
Title Suffix (Суффикс заголовка)Держите его пустым
Default Description (Стандартное описание) Packt is a modern publishing company, producing cutting-edge books, eBooks, and articles for communities of developers, administrators, and newbies alike.
Default Keywords (Стандартные ключевые слова)Мы можем оставить его пустым, т.к. мы используем Default Description.
Default Robots (Стандартные работы)INDEX, FOLLOW
Miscellaneous Scripts (Смешанные скрипты)Держите его пустым
Display Demo Store Notice (Отображение сообщения демо магазина)No
Logo Image Alt (in header section) (Изображение логотипа "Alt" (в заголовке))Packt Publishing Technical &amp; IT Book Store
Welcome Text (Приветствие)Welcome to PACKT Demo store


Не вводите текст в точности, как в предыдущей таблице. Это хорошо только для Packt. Изменить ее для того, чтобы отразить бренд интернет-магазина.

  • Catalog Optimization: Хорошо, пришло время для оптимизации каталога магазина. Magento дает вам возможность добавлять название категорий к пути для товарных URL. Поскольку Magento не поддерживает эту функцию очень хорошо, это создает вопросы (проблемы) дублирования контента. Это очень хорошая идея, чтобы отключить это. Для этого перейдите на страницу System |Configuration | Catalog | Search Engine Optimizations and и установите его следующим образом:


Прикрепленное изображение: 2.png

  • Category Optimization: Давайте установим детали для каждой категории в нашем бэкэнде Magento. Перейдите в Catalog | Manage Categories. Измените существующие категории и проверьте следующие поля:
    • Meta Description: Напишите привлекательное описание здесь, имейте в виду, что люди будут видеть описание в результативных списках поисковых систем.

    • Page Title: Сохраните его пустым, чтобы использовать имя категории, включая родительские категории. При его настройке название будет такое же, как ввод данных без родительской категории.

    • URL Key: Всегда старайтесь держать короткие, но богатые ключевыми словами URL. Очень рекомендуется использовать такие слова, как "the", "the", "for" и т.д. Имейте в виду, что вы можете только установить это для всех картинок магазина; для многоязычных магазинов вы должны держать его независимым от языка.

  • Product Optimizations: Перейдите на страницу Catalog | Manage Products для редактирования мета информации о товаре для лучшей SEO. Откройте каждый товар и в разделе Meta Information введите информацию, которая позволяет поисковым системам более легко найти, и индексируйте этот товар.

  • CMS Page Optimization: Из бэкэнда Magento мы можем установить несколько опций для страницы, которые редко встречаются на любой другой CMS. В настоящее время мы будем концентрироваться на заголовке страницы, URL ключе, и мета-данных.
  • Опять же, вы можете сохранить Keywords пустым. Описание имеет одну очень важную функцию, которая привлекает людей к нажатию, поэтому убедитесь, как говорится, что есть на странице, на которую они нажимают, и что он получает свое внимание.

  • Template Optimization: Magento устанавливает логотип сайта как h1, поэтому он должен иметь в виду, что внутри есть контент div, вы должны избавиться от названия (заголовка) контента в <h1> теге. Например, для страницы категории это должно быть имя категории и для товара название товара. Очистите самые используемые из товарных позиций. Это хорошая идея избавиться от заголовка использования в сторонних колонках, или сделать текст, имеющий отношение к магазину (например, чтобы включить ключевые слова). Нет никаких оснований, чтобы добавить "статические" названия и названия без ключевых слов с <h4>. Например, лучше изменить все <h4> тега в <div class="head"> на <strong> теги. Теперь настало время для оптимизации вашего содержания (контента), на страницах категорий вложите названия товаров в <h3> и названия категорий в <h1>. На страницах товаров вы должны поместить имя товара в <h1>.
  • SEO дружественный пустой шаблон мог бы быть верхним стартом на все эти вещи. Вы можете захватить один шаблон с сайта Magento и создать свой собственный шаблон, изменив его.

1. Google Sitemap настройки: Эти параметры контролируют, как часто Magento автоматически восстанавливает свои Google Sitemaps, чтобы гарантировать, что они текущие (действующие).
2. Для активации Google Sitemap поколения перейдите на страницу System | Configuration | Google Sitemap.
3. Установите Enabled настройку на Yes для активации автоматической регенерации Sitemaps. Используйте Start Time и Frequency, чтобы указать, как часто вы хотите регенерировать Sitemaps. Используйте Error Email параметры, чтобы определить получателя e-mail для сообщений об ошибках из автоматического процесса регенерации сайта.

Для использования автоматической Magento генерации Google Sitemaps вы должны активировать сервис Magento Cron.
4. Это последний из наших «детских» шагов. Скопируйте и вставьте следующий код в robots.txtи загрузите его в корневой каталог установки Magento:
User-agent: *
Disallow: /index.php/
Disallow: /*?
Disallow: /*.js$
Disallow: /*.css$
Disallow: /checkout/
Disallow: /tag/
Disallow: /catalogsearch/advanced/
Disallow: /review/
Disallow: /app/
Disallow: /downloader/
Disallow: /js/
Disallow: /lib/
Disallow: /media/
Disallow: /*.php$
Disallow: /pkginfo/
Disallow: /report/
Disallow: /skin/
Disallow: /var/
Disallow: /customer/
Disallow: /catalog/
Allow: /catalogsearch/result/?q


Как это работает...

Поисковая оптимизация (Search Engine Optimization) – это огромная область. Мы должны много читать, чтобы усвоить ее полностью. Шаги, которые мы описали в этом рецепте, - это маленький обходной путь для удовлетворения наших основных потребностей. Мы ввели некоторые тексты на Magento бэкенд для обработки грязной работы SEO самим Magento. Наконец, мы добавили файл robots.txt в корневой каталог сайта, чтобы помочь предотвратить нежелательные URL-адреса от индексации роботами поисковых систем.


Реализация PayPal Website Payments Pro и Express Checkout в Magento

Это то, что говорит Magento относительно PayPal. PayPal является мировым лидером в области онлайн-платежей, а также быстрым и безопасным способ для ваших клиентов для оплаты в интернете.
С PayPal и Magento вы можете принимать платежи от всех основных дебетовых и кредитных карт, получать онлайн банковские переводы, и клиентские платежи от владельцев счетов PayPal. Т.к. клиенты даже не нуждаются в PayPal счете для оплаты с PayPal, и вы, и ваши клиенты могут получить дополнительное удобство без лишних усилий.
  • Бесплатно открыть счет и получить право на защиту от мошенничества. При отсутствии настройки или отмене пошлин, добавление PayPal к вашему магазину Magento позволяет получать деньги доступно и просто.

  • Также быстро и просто настраивать и с более чем 140 миллионами счетов по всему миру, PayPal является чрезвычайно популярным способом оплаты среди миллионов покупателей в сети Интернет. Клиенты, которые чувствуют себя неловко, делясь своей финансовой информацией в Интернете, могут еще покупать в вашем магазине, и вы получите дополнительное преимущество 14 процентного увеличения продаж.

  • Magento в настоящее время поддерживает PayPal универсальный Website Payments Pro – решение платежей «все-в-одном» - которое позволит вам принимать платежи дебетовых и кредитных карт непосредственно на вашем сайте, по телефону или с использованием факсимильной связи и заказов по почте. Это решение также позволяет вашим клиентам платить с использованием PayPal PayPal Express. В сочетании с Magento, это умное масштабируемое средство для развития бизнеса.


Подготовка

Мы можем установить наш PayPal в Magento как для постановки, так и для «жизни» прямо из бэкэнда. Перед его установкой нам необходимо иметь торговый счет в PayPal. Если вы разработчик, я хотел бы предложить вам иметь бесплатный аккаунт разработчика от PayPal постановки. Вы можете подписаться на PayPal отсюда, так как мы будем нуждаться в нем на следующем шаге:



Как это сделать?

Я предполагаю, что у вас уже есть торговый счет в PayPal. Давайте сделаем его подключенным в наш магазин Magento, выполнив несколько простых шагов в бэкэнде:
1. Начните с серверной части (бэкенда) вашего магазина, и перейдите на страницу System | Configuration |PayPal.
2. Откройте другую вкладку в браузере и войдите в свой PayPal. Держите ее открытой, чтобы собрать необходимую информацию, т.к. вам нужно заполнить Magento PayPal конфигурации.
3. Вернитесь в бэкэнд магазина Magento. На первом шаге для PayPal конфигурации давайте выберем нашу страну. В моем случае это Соединенные Штаты.
4. Введите свой адрес электронной почты, связанный с вашим PayPal торговым счетом. В моем случае, это (это тестовый счет только для постановки: nurul__1227501321_biz@yahoo.com.

Выберите страну и адрес электронной почты, связанный с вашим PayPal торговым счетом. Это может быть отличным от вашего текущего местоположения.
5. Следующий скриншот показывает следующие несколько настроек, как я настроил их здесь:

Прикрепленное изображение: 3.png

6. Остальные поля довольно информативны. Любой желающий мог бы настроить их, таким образом, мы будем показывать все из этих, кроме последнего, Frontend Experience Settings.
7. Вы можете выбрать любой логотип для лучшего обслуживания пользователей, где я выбрал We Prefer PayPal. Для PayPal Merchant Pages Style я сохранил все эти поля пустыми.
8. Сохраните эту конфигурацию и проверьте ее в интерфейсе вашего магазина. Вы должны увидеть крутую кнопку Express Checkout на своей странице товара и корзины.


Как это работает...

PayPal тесно связан с Magento 1.4.x. Любой желающий мог бы установить его в Magento без каких-либо хлопот. Все, что мы сделали здесь, заполнили некоторые красиво помеченные формы. Ничего особенного!

Если вы используете Sandbox в режиме Yes, то сохраните ваш Sandbox торговый счет авторизованным (logged in), иначе вы не сможете сделать заказ. PayPal sandbox немного медленна, так что будьте готовы хранить терпение во время работы с sandbox. Не забудьте установить его действующим, пока вы заняты тестированием.


Предотвращение CSRF атаки в Magento

Cross-Site Request Forgery (CSRF) – это атака, которая пытается неосознанно добиться жертвы (victim) передачи произвольных запросов HTTP, как правило, в URL, требующих привилегированный доступ и использование существующей сессии жертвы для определения доступа. Запрос HTTP, который добивается жертвы для выполнения определенного действия на основании его или ее уровня привилегий, таких как совершение покупки или изменение или удаление информации.
Как Magento связана с тем, что вы запрашиваете? Проблема начинается с атаки под названием CSRF attack, упомянутая Artisan System в Magento админ-панели. Великолепие с этой атакой –это то, что выполняющее ее лицо, как правило, не знает и авторизованный пользователь сайта, и, таким образом, веб-программное обеспечение не имеет возможности остановить фактические действия от возникновения.
Magento парни позже предложили простое решение путем изменения административного пути URL и добавили некоторые дополнительные запрограммированные проверочные утвержденные URL-адреса в уязвимые точки. В этом рецепте мы обеспечим безопасность нашего магазина от этих типов атак.


Как это сделать...

1. Найдите и откройте файл local.xml из каталога /app/etc/.
2. Теперь найдите блок кода и измените админ путь, как сделал я. Я изменил его от администратора к бэкэнду (серверная часть). Вы можете установить другую строку. Постарайтесь выбрать путь таким сложным, каким вы можете так, что плохие парни не смогут предположить, что это!
<admin>
<routers>
<adminhtml>
<args>
<!---in my case I changed it from to backend--->
<frontName><![CDATA[backend]]></frontName>
</args>
</adminhtml>
</routers>
</admin>


Если вы застряли после изменения админ пути, то вот простой обходной путь. В phpmyadmin или что-то вроде этого инструмента попробуйте найти core_config_data и на его последней странице удалите все поля, а не только данные в них: admin/url/use_custom admin/url/custom web/secure/base_url web/unsecure/base_url и в var/cache/ удалите все файлы: mage--1 до mage—f.
3. Следующий шаг – это раздел System | Configuration | Admin | Security. Откройте его и измените, как показано в следующей таблице:




LabelValue
Add Secret Key to URLsYes
Login is Case SensitiveYes
Session Lifetime (seconds)360


4. Давайте изменим веб конфигурацию для защиты cookie и сессии должным образом. Перейдите на страницу System | Configuration | Web | Session Cookie Management и сохраните форму, как показано на следующем скриншоте:

Прикрепленное изображение: 4.png

5. Если мы можем зайти так далеко, Magento 1.4 будет в состоянии не подпускать плохих парней к сцене.


Как это работает...

К счастью, Magento уже работает с некоторыми из этих методов для предотвращения CSRF атак, которые мы только что использовали из админ-панели. В ближайшей перспективе разработчики будут усиливать безопасность для включения этих методов во все места. Хотя прямо сейчас вам придется обойтись простым обходным путем. При изменении URL вашего административного интерфейса вы можете избежать атак, поскольку злоумышленник не будет знать, на какой URL-адрес отправить поддельные запросы. Если, конечно, они не выбирают его из вашего реферер заголовка!

Защита /admin/ с помощью .htaccess могла бы также быть решением за исключением того, что некоторые обновления от Varien изменят его обратно к некоторой незащитной установке.

Поделиться темой: