Pull to refresh
2
0
Александр Бибанин @Bibainet

Разработка ПО

Send message

Во втором примере вы на самом деле объявляете две разные переменные length, каждая в своей области {...}. Использовать их за пределами этой области не получится, там они не будут существовать. Такой код не скомпилится, потому что в Go нельзя объявлять локальную переменную и не использовать ее. Поэтому придется писать так:


var length int // Объявление
if b == nil {
    length = len(s)
} else {
    length = len(b)
}
// Используем length

Это значительно длинее первого варианта, хотя и понятнее.

Похоже что этот запрос от XRumer. Берется строка из результатов его выдачи и копируется в адресную строку как есть вместе с этим текстом.
А декодировал я с помощью PHP urldecode.
Во-вторых, все, что идет за словом «Result:» не декодируется. Я не могу определить кодировку и это точно не utf8.

Нормально декодируется и там windows-1251: «Result: не нашлось формы для размещения; Result: не нашлось формы для размещени_cutted»
Вы не уточнили про то что код реализован автором сайта. По контенту в базе мы не ищем. Но вы спросили «как он так умудряется пофиксить сорцы». То есть вредоносный код в скриптах. Но если такой код присутствует в скриптах, значит он потенциально опасен и любой антивирус ищет угрозы независимо от того кем они были реализованы. В таком случае файл можно добавить в исключения и проверяться он не будет.
А что по вашему можно понимать под вредоносным кодом? Шелы, бэкдоры, спамботы и прочие вирусы, которые на мелких сайтах появляются постоянно. Например, самый простой, древний и всем известный вариант: <?php eval(base64_decode($_POST['code'])); ?> Если вы с этим не сталкивались — это еще не значит что вирусов на сайтах не бывает. Вредоносный код из файла можно вырезать, определив его начало и конец. Это можно делать вручную, если есть время на просмотр нескольких тысяч файлов на сайте, но такие задачи лучше автоматизировать. Естественно для лечения поверхностного скана недостаточно и для этого нужно зарегистрировать сайт на сервисе и разместить в корне специальный файл, через который будет удаленно осуществляться вся работа по поиску и удалению вирусов на сайте.
У яндекса и гугла есть для этого свои средства, но они не дают информации о том что и чем заражено. Есть сервис sucuri.net. Он выдает ссылки на зараженные страницы и куски найденого кода. Сервис virusdie.ru может не только найти заражения но и вылечить большинство из них, нужно только поместить один файл на сайт. Вообще, сервисов поверхностной проверки много, достаточно воспользоваться поиском.
Теперь у пусковой установки бесконечное количество ракет )
Никакой контент с сайтов мы не храним. Отчет содержит список угроз, найденных на сайте и только эти данные хранятся у нас.
Да. А что тут не так? Это же web-антивирус.
Скажите с какого устройства и через какой браузер заходите, попробуем исправить
Есть конечно, и вообще способов работы с файлами на серверах очень много. Но среди них нет ни одного «со встроенной ветрянкой») Так что мы не изобретали велосипед.
По поводу мажорной версии, в статье описаны только изменения самого языка, но есть еще очень много существенных изменений в ядре.
По поводу сделать объектным сам язык — это был бы уже совсем другой язык и другая история. А может быть когда нибудь будет.
Нужно было сделать все одной кнопкой вкл/выкл, чтобы пользоваться этим можно было без особых знаний. Поэтому мы сделали так что фаервол независим от конфигурации сервера, наличия тех или иных модулей на нем и тд. Пришлось пойти по пути встраивания его в саму CMS, а не более глубже (что на многих, тем более шаред хостингах, с разной конфигурацией почти невозможно сделать в автоматическом режиме). CMS работает на PHP, и если она работает, значит фаервол на сайте тоже будет работать. Конечно такой подход не может дать уровень защиты, сравнимый с более основательными подходами к защите серверов, но простому пользователю он позволяет без всяких знаний или привлечения специалистов серьезно повысить уровень защищенности своего сайта. По поводу конфликтов с другими фаерволами. Наш фаервол устанавливается НЕ как плагин или расширение к CMS, он никак не использует API конкретной CMS. Во первых, он определяет CMS по наличию известных папок/файлов и их содержимого. Далее в один из файлов ядра, подключаемый при каждом запросе еще до его обработки, до подключения к базе и тд, жестко прописывает include своего основного скрипта. Этот скрипт в случае обнаружения подозрительной активности может полностью заблокировать любой запрос. Если этого не происходит, то он никак не влияет на дальнейшую его обработку скриптами CMS и другими средствами защиты, встроенными в нее в виде расширений.
В этом и есть особенность Вирусдай — большинство вирусов он лечит, вырезая вредоносный код из зараженного файла, правильно определяя начало и конец этого кода с сохранением работоспособности файла и сайта. В некоторых случаях файл удаляется (если это шелл). От повторных заражений, DoS атак и разных инъекций может помочь установка фаервола.
  • Необходимость включить allow_url_fopen у нас прописана здесь. Но по поводу использования curl мы думали и скорее всего такую возможность мы введем.
  • Ошибки загрузки файлов все таки отлавливаются (проверяется is_string и strlen), а обрыв соединения во время закачки маловероятен, так как объем загружаемых данных не превышает нескольких килобайт, и такого за несколько лет еще не случалось. К тому же такая ошибка не приведет к потере данных.
  • Тут с вами согласен, сделаем безопасную запись во временный файл с последующим переименовыванием.
Но даже сейчас, в 5.6, если в теле цикла добавить элемент в массив, цикл его не затронет. Если изменить элемент, то цикл все равно получает неизмененное значение. Вот пример с пояснениями:

$a = [0, 1, 2];
foreach ($a as $item) {
	if ($item === 1) {
		$a[2] = 3; // Изменяем следующий элемент
		$a[] = 4; // Добавляем элемент в конец
		// $a теперь равно [0, 1, 3, 4], но цикл по прежнему выдает 0, 1, 2.
	};
	echo $item, ' ';
};
print_r($a);

Результат:
0 1 2 Array
(
[0] => 0
[1] => 1
[2] => 3
[3] => 4
)
В теле цикла foreach теперь не получится производить манипуляции над самим массивом.
Не нашел этого в указанном в источниках документе. Хотя в кратком обзоре это есть. Добавил, спасибо.
Тут уже отвечали, что там может быть false, 0, «0», пустой массив. И эти значения будут проигнорированы. В любом случае здесь будет ошибка, а ошибки лучше не глушить, а избегать. Тем более @ — затратный оператор, он устанавливает error_reporting в 0 перед вычислением выражения.
Да и не совсем понятно зачем было перескакивать через 6 версию. Между 5.0 и 5.6 было даже больше изменений в самом языке, но возможно в движке их действительно много. А пых под виндой, для тестов, для разработки, а еще же есть IIS.
1

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity