Как стать автором
Обновить
39
0
Евгений @Jenek

Пользователь

Отправить сообщение
я признаю, что в некоторых случаях это будет полезно

но как защищать систему с открытым кодом

неужели вся надежда, на то, что удасться недопустить злоумышленника к базе
очень просто отследить, при неудачном входе запоминаем логин и ip и в течении 5 минут не пускаем с других ip
Если каждый раз нужно вводить капчу то проще восстановить пароль,
а 10 вполне достаточно, чтобы вспомнить
что-то я затупил насчет md5(md5()) подобрать его не сложнее остальных
Раньше я использовал,что-то похожее, но это абсолютно бесполезно, потому что злоумышленник может получить доступ к коду и тогда, никаких проблем с подбором паролей у него не будет, хотя в определенной ситуации это может быть полезно
спасибо за статью,
Немного не в тему вопрос, а почему от перебора нужна капча, можно ведь просто ограничить количество попыток (например, 10 достаточно в любом нормальном случае), а потом 5 минут не принимать, пароль с этого IP?
А как этот string сделать secret, я уже где-то на хабре предлагал генерировать нестандартный хеш или стандартный хеш от измененного пароля и меня просветили, что все, что лежит на сервере может в любой момент стать несекретным.

Я, конечно, не спец, но пароли пользователей оригинальность обычно не отличаются и можно по хорошему словарю нагенерировать хешей (хоть sha1, хоть md5) заранее, а когда в руки попадет база, только проверить, нет ли в ней известных хешей, а для md5(md5(pass)) генерить придется слишком дофига, это немного компенсирует невозможность заставить пользователя выбирать пароль по всем правилам.
А если почитать ветку?

>Пока есть .gif, прозрачность .png не сильно требуется.

>>Такая прозрачность как в gif отлично работает в png в любом експлорере, проблемы только с альфа-каналом.

>>>А какое отношение прозрачность имеет к полупрозрачности, которую собственно и фиксит альфалоадер?

:)
Очень удобно.

Представил ситуацию:
сидишь ночью, за компом, соседи празнуют что-то, музыка на весь дом, а уже за полночь и тут менты подъезжают, прямо на Хабр :)

А если напишешь на Ньюс2, что у нас проблемы с демократией, то они сразу прибывают к подъезду :)
Ну и хорошо, чем больше пожалуются тем быстрее исправят, да вы и проблему описали получше.
$.browser.msie в данном случае true, а мне нужна версия, придется самому определять.

Сообщил разработчикам, пусть поправят.
Что за ерунда с версией браузера в jQuery 1.1.4
alert($.browser.version);
в IE6 показывает: 4.6

хотя
alert(navigator.userAgent.toLowerCase());
показывает: mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; mra 4.6 (build 01425); .net clr 2.0.50727)
от браузера многое зависит:
     jq2   jq3  jq4  p    m 
FF: 30192 3142 3057 827 978
IE6: 17072 2701 3621 7551 5346
Прижали к стенке :) нельзя не согласиться, что когда все библиотеки идут в комплекте, это удобно.

кстати,
using namespace System::Net::Sockets;
конструкция присущая оригинальному C++

нововведения .NET можно рассмотреть в такой строчке:
TcpListener^ server = gcnew TcpListener( localAddr,port );
здесь используется мусоросборщик, упрощающий работу с памятью.
Приведен пример на C++ и .NET Framework, на C# он выглядел бы аккуратнее, я его привел, чтобы показать, что программы не C++ никогда не выглядят так, как описал автор статьи. Выше я написал о кроссплатформенной библиотеке для C++, просто не стал искать пример с ее использованием.
Если в Ruby можно будет использовать Win API, значит можно работать с сетью и без socket, да и сам socket в виндовс версии реализован именно через Win API (другой возможности нет), то есть сравнение выглядит так:

С++ -> Win API
Java -> Socket -> Win API (в яве я не силен и модуль для работы с сокетами назову Socket)
Ruby -> socket -> Win API

Именно библиотека делает код в последних двух случаях кроссплатформенным, и простым, почему не используется никакая библиотека для C++ ???, ведь найти ее не сложно, набрал в Google "c++ socket library" первый результат http://www.alhem.net/Sockets/, пожалуйста Windows, Linux, Mac OS, Solaris. C++ это абсолютно кроссплатформенный язык, и он есть даже на тех платформах где руби никогда не появится.

Единственное преимущество Ruby в том, что библиотеки включены в основной пакет, и я его, конечно, признаю, с другой стороны практически каждая среда разработки для C++ предоставляет обертку для socket, в win такая обертка включена в .NET Framework (да и у Borland С++ Builder такая обертка есть, правда он вроде загнулся).

Так что то, что C++ в этом сравнении представлен не верно, для меня не вызывает сомнений. К тому же на хабре уже не раз говорилось о некорректности сравнения языка без фреймворков/библиотек и с ними. Вроде PHP vs Ruby on Rails
Есть вероятность, что автор будет отметать все возражения, просто удаляя комменты.
>> задача была сравнить подходы в программировании сокетов.
в c++ нет стандартной библиотеки сокетов, что не есть гуд, но в каждой среде есть своя библиотека, можно было использовать .NET Framework

А сравнение языков Java и Ruby с библиотками и голого C++ это не сравнение, а издевательство. Попробуйте написать в Ruby или Java c помощью win api, выйдет не меньше кода.

Вот кстати серверная часть из примеров .NET Framework:

#using <System.dll>


using namespace System;
using namespace System::IO;
using namespace System::Net;
using namespace System::Net::Sockets;
using namespace System::Text;
using namespace System::Threading;

void main()
{
   try
   {
      Int32 port = 13000;
      IPAddress^ localAddr = IPAddress::Parse( "127.0.0.1" );
      
      TcpListener^ server = gcnew TcpListener( localAddr,port );
      
      server->Start();
      
      array^bytes = gcnew array(256);
      String^ data = nullptr;
      
      while ( true )
      {
         TcpClient^ client = server->AcceptTcpClient();
         data = nullptr;
         
         NetworkStream^ stream = client->GetStream();
         Int32 i;
         
         while ( i = stream->Read( bytes, 0, bytes->Length ) )
         {
            data = Text::Encoding::ASCII->GetString( bytes, 0, i );
            
            data = data->ToUpper();
            array^msg = Text::Encoding::ASCII->GetBytes( data );
            
            stream->Write( msg, 0, msg->Length );
         }
         
         client->Close();
      }
   }
   catch ( SocketException^ e ) 
   {
   }
}

хотел поставить тег pre, но что-то совсем плохо с ним, выручил &nbsp;
Разница между кодом на С++ и Ruby - заметна не вооруженным глазом :)

Не в укор руби который я все собираюсь выучить, но ради восстановления справедливости нужно заметить, что в данном случае автор в руби использовал надстройку socket, а в C++ работал с win api напрямую, поэтому получился такой код, я на C++ писал кое какие сетевые приложеия и могу точно сказать, если бы использовались классы обертки для сокетов то код различался бы только синтаксисом, а не размером.
Я использую php, прописываю в .htaccess:
AddType application/x-httpd-php5 .css
а в самом файле примерно так:

<?php
ob_start ("ob_gzhandler");
header("Content-type: text/css; charset: UTF-8");

header('Pragma: no-cache'); //при разработке

$link_color = '#1a51ab';
$hovered_link_color = 'red';
$page_bg = '#f0f6ff';

?>

a { color:<?=$link_color?>; }


не очень красиво получается, но можно написать простенький парсер для таких css:

$link_color = #1a51ab;
$hovered_link_color = red;
$page_bg = #f0f6ff;

a { color: $link_color; }


и перенаправить обработку css на него с помощью mod_rewrite

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность