- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
function pro($input) {
$input=str_replace("\0", '_', $input);
$input=trim($input);
$input=strtr($input,array('!'=>'!','"'=>'"','$'=>'$','%'=>'%',"'"=>"'",'('=>'(',')'=>')','*'=>'*','+'=>'+',','=>',','-'=>'-','.'=>'.','/'=>'/',':'=>':','<'=>'<','='=>'=','>'=>'>','?'=>'?','@'=>'@','['=>'[','\\'=>'\',']'=>']','^'=>'^','_'=>'_','`'=>'`','{'=>'{','|'=>'|','}'=>'}','~'=>'~'));
return $input;
}
function depro($input) {
$input=strtr($input,array('!'=>'!','"'=>'"','$'=>'$','%'=>'%',"'"=>"'",'('=>'(',')'=>')','*'=>'*','+'=>'+',','=>',','-'=>'-','.'=>'.','/'=>'/',':'=>':','<'=>'<','='=>'=','>'=>'>','?'=>'?','@'=>'@','['=>'[','\'=>'\\',']'=>']','^'=>'^','_'=>'_','`'=>'`','{'=>'{','|'=>'|','}'=>'}','~'=>'~'));
return $input;
}
во всяком случае аффтар считает что это действительно защита не в рот ибацца, anti sql inj.. это вам не это.
А потом обратно.
Зачем?
Причем тут sql injection?
Почему букву Ы не заменяют, а символ "_" заменяют?
Там что ни тема -- то пол часа слёз)))
Там было порядка трех тысяч .asp файлов на vbs, в каждом из которых была пара-тройка SQL запросов.
И конечно в каждом была SQL инъекция. Когда автору указали на такую проблему, он прошелся автозаменой по файлам, и везде добавил код, который вырезал из приходящих POSTом/GETом параметров слова DELETE, UPDATE, WHERE и почему-то цифру 1. (видимо потому что кто-то подставлял в условие 1=1).
Людям, имевшим эту цифру в ZIPCODE или пароле тогда крупно не повезло.
Что-то мне это напоминает
Спустя лет 5 там было уже много языков.
Мы делали бекенд на .net, а веб-сайт компании был таким вот уродцем. Мы с ним через COM interop общались. Ссылку не могу дать, к сожалению по этическим причинам.
А инъекция была очень простая: "SELECT * FROM users WHERE user_id=" + Request("userId")
в асп не хожу но Request("userId") это типа не фильтрованного $_REQUEST['userid'] я так понял :))
Там была, например, авторизация и сообщения типа "привет %username%". Вот код, который ходил в базу данных и выводил такую строчку и присутствовал в каждом файле.
Очень позорно, что здесь про такое слыхом не слыхивали, но устроили "обсёр" на непонимании.
Эта реализация содержит избыток замены символов, но это не говнокод, просто автор без полного понимания подошёл к реализации.
Уважаемый GoodTalkBot, мне очень интересно, как вы смогли бы обойти эту "ни в рот ибацца" защиту?
Реализацию в студию!
Во вторых, если есть абсолютная уверенность в mysql_real_escape_string, то советую почитать "хацкерские сайтики" на тему обхода.
Конкретно для этой функции есть атака, которая позволяет обходить её.
Советую заняться сперва ликбезом, а после писать писульки.
Да, вопрос остался открытым:
реализацию обхода этой "ни в рот ибацца" защиты в студию!
---
....
Конкретно для этой функции есть атака, которая позволяет обходить её.
---
где она? если ты знаешь что она есть давай в студию реализацию.
"хацкерские сайтики"
----
xakep.ru чтоле :))))
иди маны кури придурок.
Во-вторых, за безопасность я получаю деньги, и делиться информацией в легкодоступной форме я не собираюсь, так как не хочу, чтоб в мою сферу пришли безграмотные полукровки.
И вопрос про реализацию обхода "ни в рот ибацца" защиты я задал первый.
Не будем устраивать ясли...
Сможешь обойти эту функция, я тебе в "личку" скину информацию про метод обхода всеми обажаемой mysql_real_escape_string функции.
PS: xakep.ru - это глянец для псевдохацкеров, обсуждаемый свежие сплетни и новинки в хац-товарах в сфере взлома.
N: и ещё раз, убедительная просьба - без оскорблений.
---
жги есче :)))
С детками спорить себе дороже.
Подтвердить свои аргументы автор данного поста не может, только занимается "целенаправленным обсёром", дабы защитить свои амбиции.
а mysql_real_escape_string не обходится. Посему Орать на все интернеты что Вы супер хакер и супер Взрослый дядька не стоит. А Приведенный здесь код обходится в путь. И я не буду орать сто я никому не скажу как. Я скажу прям здесь и сейчас........
Готовы ....
Тогда внимайте.
На вход подается не сложный набор символов что вроде <script> alert(1) </script> он отлично обрабатывается. И пишется в базу и все хорошо. Но при выводе в браузер этот код подвергается обработке функцией depro и снова становится рабочим вот и все я заставив сайт исполнять свой JS я вообще не напрягаюсь разнесу его нах....... Хорошо что я добрый.
Его суть, все пользовательские данные обрабатываются функцией pro, а depro нужна крайне редко, для получения оригинального пользовательского значения и только для внутренней работы!
По поводу криков на весь интернет и возраста:
1 - никто не кричал, я всего лишь сказал, что это не говнокод и текущий код может достаточно неплохо, хоть и с издержками, выполнять свою работу.
2 - я ненавижу современную молодёжь за: амбиции, безграмотность, не желание думать, и особенно за мат и оскорбления.
3 - я не хакер, всего лишь работаю над безопасностью сайтов (за мою жизнь ни один сайт от меня не пострадал).
Если бы диалог пошёл нормально, а без выплёскивания мата и оскорблений, получили бы всю информацию.
FYI mysql_escape_string - это древняя дрянь, которая была заменена на mysql_real_escape_string, а вот последняя не изолирует символ % (с которым такого можно наворотить в умелых руках) и пропускает опасные символы в кодировке BIG5 и GBK.
to Vasiliy: спасибо, что хоть Вы подошли взвешено и без оскорблений!
PS: сорри, что с другого аккаунта, тот личную почту уж сильно заваливал уведомлениями.
Спам фильтр настроить помогает.
суд я по тому, что Некто минусит нормальные посты и плюсит феерический бред -- Лепросус незримо с нами)
FYI test7 единственный свободный, остальные с циферками заняты - придумывать себе ники типа GoodMegaTaklSuperBot желания нет.
Вы у себя на Украине ещё не сделали сайт подобной тематике?
Куда мне до вас?
--
>да и ушли бы с этого сайта
не вам решать на каком сайте быть. и вы явно не старше меня, ибо переходить на оскорбления типа "выходцы из хохляндии" это удел школоло :)
Зачем Вы зарегистрировали семь аккаунтов test1 -- test7, и понаставили себе плюсов?
Вам это не принесет счастья, а базу ГК Вы только что сделали на 7 записей тяжелее.
> не сделали сайт подобной тематике?
детектед. из под спеллчекера всё равно торчит :-D
а ниже нагой лепросус и «амбицилы» (амбициозные имбецилы?)
Пост - бред!
"хранить HTML в базе данных -- это ужасно!" - вы это расскажите всем коммерческим CMS, видимо, они получают деньги за ужасные решения.
Лепросус больше сюда не нагой, это последний пост, который я комментировал. Тут шайка амбицилов безграмотных тусуется.
Да, и маленькие ответики на тему корявости mysql_real_escape_string я дал - читайте остальное сами.
к сожалению они не будут меня слушать.
Впрочем, работы с prepared statements Вы там тоже скорее всего не найдете. Большинство кода -- ужасно, но речь не об этом.
Думаю никто не будет спорить с тем, что в базе надо хранить семантику, а не представление. Потому что если дизайнер захочет изменить внешний вид, то прийдется перелапачивать данные. А это плохо. Хотя смешно говорить про плохие и хорошие решения в мире php.
Я Вас спросил без оскорблений: чем этот код лучше mysql_real_escapse_string?
Вы вместо ответа обозвали меня безграмотным, а потом еще и маленьким. Это некрасиво.
Ответ на mysql_real... см. выше.
А по поводу хранения представления в БД - а кто это делает или собирается?
Речь идёт только об форматированном HTML тегами текста. И в этом случае дизайнеру не мешает исправить дизайн или подобное.
И я не обзывал, всего лишь констатация: те вещи, которые вы приводили в аргумент - смехотворны, создаётся впечатление, что люди здесь прочитали книгу "Супер программер на PHP" и теперь знают все мировые истины, да и прислушиваться не хотят.
не думаю. Я был вежлив, пока на мой простой вопрос не получил презрительнгого ответа "займитесь ликбезом"
>>Ответ на mysql_real... см. выше.
спасибо
>>А по поводу хранения представления в БД - а кто это делает или собирается?
HTML это часть представления, если Вы не вкурсе.
>>Речь идёт только об форматированном HTML тегами текста
На мой взгляд тогда уже надо разрешить группу тэгов (стронг, пре итд) и уж таг script, link и img допускать точно не надо. А если нету тага script, link и img, то нету и кросс-сайт скриптинга. Разве нет?
>> те вещи, которые вы приводили в аргумент - смехотворны, создаётся впеч
какие именно вещи?
Если вы не совсем в теме, то предметного спора всё-равно не будет - лишь оскорбления.
;)))
в одном Вы правы -- спор пора заканчивать
Поведение шакалов...
Он, вроде, был на вашей стороне или я ошибаюсь?
Я очень много постов даже не комментирую, просто ставлю баллы за пост и комментарии!
Больше занятся не чем, чем создавать себе 5 (как вы говорите) или более аккаунтов и плюсовать и минусовать - я прослежусь сейчас от хохота.
Прослежусь - http://www.vseslova.ru/index.php?dictionary=ushakov&word=prosle jus
>>Ананимус
>>обажаемой
...
>>Придётся ещё и русскому языку учить
круто
LMAO
>>, то можно избежать и XSS.
Ах, я понял, понял. Эта замена еще защищает код от переполнения памяти, ускоряет загрузку в 25% и делает мои волосы на 73.5% более шелковистыми
И повторюсь ещё раз - это старый алгоритм (да, он не повысит производительности, да он не вырастит на лысине волос), но его обхода до сих нет.
в замене кавычки?
Разве не это же самое делает mysql_escape_string? Зачем изобретать велосипед?
А вообще это все детский сад. Надо использовать prepared statements с параметрами, и SQL инъекция станет немыслима впринципе.
И расскажите пожалуйста, причем тут XSS?
На тему велосипеда - и да, и нет: код фактически делает экранирование, если много текста, то растёт объём БД и замедляется работа скрипта, но при грамотном использовании этого алгоритма нет возможности провести SQL-инъекций, так же как и XSS (но не на 100%).
mysql_escape_string - это не панацея!
Повторюсь ещё раз: это очень старый подход, ОЧЕНЬ!
По поводу детского сада - соглашусь, как код так и комментаторы - сплошные ясли.
И снова соглашусь: "Надо использовать prepared statements" - это верный путь!
А давать ответы "причём XSS или почему так" я не стану, сайт посвящён говнокоду, в данном примере его я не вижу, если нужна информация по безопасности, то ищите на англоговорящих ресурсах - её полно.
возможно)
>> так же как и XSS (но не на 100%
какое отношение этот алгоритм имеет к кросс-сайт скриптингу?
>>mysql_escape_string - это не панацея!
приведите пожалуйста пример ситуации, когда этот чудесный алогоритм поможет, а escape_string не сработает
>>Повторюсь ещё раз: это очень старый подход, ОЧЕНЬ!
когда не было prepared statements и mysql_escape_string?
>> если нужна информация по безопасности, то ищите на англоговорящих ресурсах - её полно.
а что там искать? "как волшебный алгоритм спасет от XSS"?
Вы приходите, и говорите: "у слона три уха".
Я спрашиваю Вас: а почему Вы так думаете?
А Вы: поищите в Интернете, займитесь ликбезом.
Вы кащенит?
Рассказывать почему я не стану (см. выше).
PS: жаргон используйте для пользователей вашего возраста, думаю, GoodTalkBot "кащенит" лучше поймёт.
безумные, потому что минусуют только ради минусов
от http://govnokod.ru/user/2034 до http://govnokod.ru/user/2044
Тут нужна эвристика.
С одного ip регаешься 10 в течение получаса? Минус один к карме.
В одной зоне все почты? еще минус один.
Если наберется минус пять -- заморозить IP (или доменную зону в почте) на сутки