Jump to content

superpupervest

Newbie
  • Posts

    4
  • Joined

  • Last visited

Everything posted by superpupervest

  1. Я не занимаюсь технической поддержкой сайтов, но так уж сложилось, что ко мне часто обращаются за помощью. С одной стороны отказывать неудобно, да и не выгодно с коммерческой точки зрения, с другой за большое спасибо в магазине тоже не расплатишься. Поэтому я решил написать универсальное решение, но столкнулся с некоторыми проблемами. Суть решения заключается в том, чтобы отловить данные POST, GET, COOKIE и обработать их еще до того, как сайт произведет с ними какие-либо действия. Вот собственно сам код $jsxss="onabort,oncanplay,oncanplaythrough,ondurationchange,onemptied,onended,onerror,onloadeddata,onloadedmetadata,onloadstart,onpause,onplay,onplaying,onprogress,onratechange,onseeked,onseeking,onstalled,onsuspend,ontimeupdate,onvolumechange,onwaiting,oncopy,oncut,onpaste,ondrag,ondragend,ondragenter,ondragleave,ondragover,ondragstart,ondrop,onblur,onfocus,onfocusin,onfocusout,onchange,oninput,oninvalid,onreset,onsearch,onselect,onsubmit,onabort,onbeforeunload,onerror,onhashchange,onload,onpageshow,onpagehide,onresize,onscroll,onunload,onkeydown,onkeypress,onkeyup,altKey,ctrlKey,shiftKey,metaKey,key,keyCode,which,charCode,location,onclick,ondblclick,oncontextmenu,onmouseover,onmouseenter,onmouseout,onmouseleave,onmouseup,onmousemove,onwheel,altKey,ctrlKey,shiftKey,metaKey,button,buttons,which,clientX,clientY,detail,relatedTarget,screenX,screenY,deltaX,deltaY,deltaZ,deltaMode,animationstart,animationend,animationiteration,animationName,elapsedTime,propertyName,elapsedTime,transitionend,onerror,onmessage,onopen,ononline,onoffline,onstorage,onshow,ontoggle,onpopstate,ontouchstart,ontouchmove,ontouchend,ontouchcancel,persisted,javascript"; $jsxss = explode(",",$jsxss); foreach($_POST as $k=>$v) { if(is_array($v)) { foreach($v as $Kk=>$Vv) { $Vv = preg_replace ( "'<script[^>]*?>.*?</script>'si", "", $Vv ); $Vv = str_replace($jsxss,"",$Vv); $Vv = str_replace (array("*","\\"), "", $Vv ); $Vv = strip_tags($Vv); $Vv = htmlentities($Vv, ENT_QUOTES, "UTF-8"); $Vv = htmlspecialchars($Vv, ENT_QUOTES); $_POST[$k][$Kk] = $Vv; } } ELSE { //Сначала удаляем любые скрипты для защиты от xss-атак $v = preg_replace ( "'<script[^>]*?>.*?</script>'si", "", $v ); //Вырезаем все известные javascript события для защиты от xss-атак $v = str_replace($jsxss,"",$v); //Удаляем экранированание для защиты от SQL-иньекций $v = str_replace (array("*","\\"), "", $v ); //Экранируем специальные символы в строках для использования в выражениях SQL $v = mysql_real_escape_string( $v ); //Удаляем другие лишние теги. $v = strip_tags($v); //Преобразуеv все возможные символы в соответствующие HTML-сущности $v = htmlentities($v, ENT_QUOTES, "UTF-8"); $v = htmlspecialchars($v, ENT_QUOTES); //Перезаписываем GET массив $_POST[$k] = $v; } }[/CODE] Тоже самое я сделал по аналогии с _GET и _COOKIE Основные недостатки. 1) У меня так и не вышло обработать, а точнее перезаписать их внутри функции и передать _POST, _GET и _COOKIE в качестве переменных, а главное, как следствие, обработать многомерные массивы данных рекурсивно. Соответственно $_POST[][], $_POST[][][] и тд уже обработать не выйдет и каждый такой массив надо вставлять отдельно. Массив может быть бесконечно большой, а код получится бесконечно громозкий. 2) Не охота убирать функцию mysql_real_escape_string ведь никогда не знаешь, где ее забыли упомянуть, но возникает проблема излишнего экранирования символов. 3) strip_tags удаляет все теги. Мне бы не хотелось убирать все, а лишь самые опасные теги, но беда в том, что в дополнительных параметрах можно указать только теги, которые нужно оставить. Конечно, можно использовать регулярные выражения, но к сожалению, нет уверенности в том, что не забудешь что-нибудь важное, поэтому если у кого-то есть отличная замена этому, то предлагаю собрать все в кучу и избавиться от strip_tags 4) Ну и жду других советов по данному вопросу.
  2. Подскажите, а как бы мне теперь проверить почту на работоспособность. Получается, что сейчас я отправляю сообщения себе на yandex, gmail и mail.ru. Туда сообщения доходят. Но ведь много еще и других ящиков. Можно как-то отправить с сервера запрос и получить ответ. Типа почтовый ящик не работает, или в спам попал. И на php его обработать уже и куда-нибудь занести скажем в базу. И потом бы я уже мог посмотреть все недоставленные письма и проанализировать, что как и почему. Буду крайне признателен.
  3. В общем ребят, попробовал я еще несколько хостеров. Надо сказать ситуация аналогичная. Пробовал настроить почтовый ящик со своим доменом у них, но надо признать техподдержка у них оставляет желать лучшего. Остановился на http://wazzup.su, там и почта не блокируется на KVM тарифах, и техподдерка быстро реагируется и помогает решать любые проблемы. Единственное, что в первые дни долбанул где-то по 30 тысяч писем в сутки и на третий день заметил, что письма мои не доходят до крупных почтовиков, включая mail.ru, yandex, gmail и rambler. Доходит только на почтовые ящики, которые на своих доменах сделаные, типа mysait.ru, да и то не до всех. Что в общем-то тоже оказалось не вариант, так как большинство получателей пользователи именно этих почтовых сервисов. Как оказалось блокировка идет за спам по IP и содержанию письма. Но слава богу ребята помогли настроить отправку через smpt c помощью утилиты msmtprc, которую спасибо хостерам тоже помогли установить и настроить. По статистике mail.ru разрешает отправлять не больше 1 письма в минуту и блокирует только в путь. Яндекс не больше 150 писем в сутки. Так что пришлось зарегистрировать несколько почтовых ящиков на gmail, он оказался самым лояльным и отправка там не менее 500 писем в сутки. В принципе я зарегистрировал 10 почтовых ящиков на gmail и перебираю их по порядку. Так что уходит где-то по 3-5 тысяч писем в сутки. Слава богу у разработчика каталога есть платный модуль, который позволяте делать настраиваемую рассылку. Ну и побольше всяких тегов использовал в шаблонах, чтобы текст был более динамическим и сам текст сократил. Отправку писем через регистрацию правда пришлось отключить, а оповещение я уже сделал через модуль рассылки. Хотел еще заказать спам рассылку, но у меня оказалось из 2 миллионов предприятий более 700 тысяч с почтой. А самая дешевая рассылка, которую я нашел 1$ за 1000 сообщений. Это чтобы все 700 отослать мне надо не меньше 700$. Я столько и не зарабатываю. А если учесть еще, что мне ее нужно будет делать периодически, то так и вовсе разориться можно. Пробовал еще несколько платных smpt-серверов, котоыре вроде как не блокируют. Но от блока по IP они тоже не защищают и техподдержка там никакая, а стоит в разы дороже. Но в общем-то пока так. Если кто-то знает сервер, где таких проблем не происходит, то будьте добры пожалуйста. Или хотя бы как сделать так чтобы IP не попадали в спам-базы яндекса, gmail, mail.ru и ramblera.
  4. Купил скрипт каталога организаций и фирм, залил более 2 млн предприятий. Во время активации каждой организации уходило уведомление. В итоге хостер весь сайт за спам вырубил. Пошел к другому. Тот и вовсе отключил весь аккаунт. Где можно найти нормального хостера, который не блочит за рассылку? Или может есть какие-то другие обходные пути? К слову рассылка еще и к тому же попадает в спам, даже когда доходит. Это тоже не желательно. В общем жду любого дельного совета по данному вопросу.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy