- 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.. это вам не это.
Lure Of Chaos 24.08.2010 21:52 # −4
Анонимус 24.08.2010 21:58 # −2
А потом обратно.
Зачем?
Причем тут sql injection?
Почему букву Ы не заменяют, а символ "_" заменяют?
Lure Of Chaos 24.08.2010 22:03 # −5
GoodTalkBot 24.08.2010 22:03 # −4
Анонимус 24.08.2010 22:05 # −1
Там что ни тема -- то пол часа слёз)))
GoodTalkBot 24.08.2010 22:06 # −2
istem 25.08.2010 01:03 # −2
Анонимус 25.08.2010 01:19 # +3
Там было порядка трех тысяч .asp файлов на vbs, в каждом из которых была пара-тройка SQL запросов.
И конечно в каждом была SQL инъекция. Когда автору указали на такую проблему, он прошелся автозаменой по файлам, и везде добавил код, который вырезал из приходящих POSTом/GETом параметров слова DELETE, UPDATE, WHERE и почему-то цифру 1. (видимо потому что кто-то подставлял в условие 1=1).
Людям, имевшим эту цифру в ZIPCODE или пароле тогда крупно не повезло.
Что-то мне это напоминает
GoodTalkBot 25.08.2010 01:23 # −2
Анонимус 25.08.2010 01:30 # −1
Спустя лет 5 там было уже много языков.
Мы делали бекенд на .net, а веб-сайт компании был таким вот уродцем. Мы с ним через COM interop общались. Ссылку не могу дать, к сожалению по этическим причинам.
А инъекция была очень простая: "SELECT * FROM users WHERE user_id=" + Request("userId")
GoodTalkBot 25.08.2010 01:36 # −3
в асп не хожу но Request("userId") это типа не фильтрованного $_REQUEST['userid'] я так понял :))
Анонимус 25.08.2010 01:39 # −2
Там была, например, авторизация и сообщения типа "привет %username%". Вот код, который ходил в базу данных и выводил такую строчку и присутствовал в каждом файле.
leprosus 25.08.2010 11:40 # +4
Очень позорно, что здесь про такое слыхом не слыхивали, но устроили "обсёр" на непонимании.
Эта реализация содержит избыток замены символов, но это не говнокод, просто автор без полного понимания подошёл к реализации.
Уважаемый GoodTalkBot, мне очень интересно, как вы смогли бы обойти эту "ни в рот ибацца" защиту?
Реализацию в студию!
GoodTalkBot 25.08.2010 11:59 # −4
leprosus 25.08.2010 12:10 # +5
Во вторых, если есть абсолютная уверенность в mysql_real_escape_string, то советую почитать "хацкерские сайтики" на тему обхода.
Конкретно для этой функции есть атака, которая позволяет обходить её.
Советую заняться сперва ликбезом, а после писать писульки.
Да, вопрос остался открытым:
реализацию обхода этой "ни в рот ибацца" защиты в студию!
GoodTalkBot 25.08.2010 12:18 # −9
---
....
Конкретно для этой функции есть атака, которая позволяет обходить её.
---
где она? если ты знаешь что она есть давай в студию реализацию.
"хацкерские сайтики"
----
xakep.ru чтоле :))))
иди маны кури придурок.
leprosus 25.08.2010 12:51 # +7
Во-вторых, за безопасность я получаю деньги, и делиться информацией в легкодоступной форме я не собираюсь, так как не хочу, чтоб в мою сферу пришли безграмотные полукровки.
И вопрос про реализацию обхода "ни в рот ибацца" защиты я задал первый.
Не будем устраивать ясли...
Сможешь обойти эту функция, я тебе в "личку" скину информацию про метод обхода всеми обажаемой mysql_real_escape_string функции.
PS: xakep.ru - это глянец для псевдохацкеров, обсуждаемый свежие сплетни и новинки в хац-товарах в сфере взлома.
N: и ещё раз, убедительная просьба - без оскорблений.
GoodTalkBot 25.08.2010 12:56 # −6
---
жги есче :)))
leprosus 25.08.2010 13:01 # +3
GoodTalkBot 25.08.2010 13:03 # −7
leprosus 25.08.2010 13:07 # +4
С детками спорить себе дороже.
Подтвердить свои аргументы автор данного поста не может, только занимается "целенаправленным обсёром", дабы защитить свои амбиции.
GoodTalkBot 25.08.2010 13:10 # −6
Vasiliy 25.08.2010 16:40 # −3
а mysql_real_escape_string не обходится. Посему Орать на все интернеты что Вы супер хакер и супер Взрослый дядька не стоит. А Приведенный здесь код обходится в путь. И я не буду орать сто я никому не скажу как. Я скажу прям здесь и сейчас........
Готовы ....
Тогда внимайте.
На вход подается не сложный набор символов что вроде <script> alert(1) </script> он отлично обрабатывается. И пишется в базу и все хорошо. Но при выводе в браузер этот код подвергается обработке функцией depro и снова становится рабочим вот и все я заставив сайт исполнять свой JS я вообще не напрягаюсь разнесу его нах....... Хорошо что я добрый.
GoodTalkBot 25.08.2010 16:52 # 0
Vasiliy 26.08.2010 06:46 # +1
test7 25.08.2010 16:59 # 0
Его суть, все пользовательские данные обрабатываются функцией pro, а depro нужна крайне редко, для получения оригинального пользовательского значения и только для внутренней работы!
По поводу криков на весь интернет и возраста:
1 - никто не кричал, я всего лишь сказал, что это не говнокод и текущий код может достаточно неплохо, хоть и с издержками, выполнять свою работу.
2 - я ненавижу современную молодёжь за: амбиции, безграмотность, не желание думать, и особенно за мат и оскорбления.
3 - я не хакер, всего лишь работаю над безопасностью сайтов (за мою жизнь ни один сайт от меня не пострадал).
Если бы диалог пошёл нормально, а без выплёскивания мата и оскорблений, получили бы всю информацию.
FYI mysql_escape_string - это древняя дрянь, которая была заменена на mysql_real_escape_string, а вот последняя не изолирует символ % (с которым такого можно наворотить в умелых руках) и пропускает опасные символы в кодировке BIG5 и GBK.
to Vasiliy: спасибо, что хоть Вы подошли взвешено и без оскорблений!
PS: сорри, что с другого аккаунта, тот личную почту уж сильно заваливал уведомлениями.
Vasiliy 26.08.2010 06:48 # 0
Спам фильтр настроить помогает.
Анонимус 25.08.2010 17:17 # 0
суд я по тому, что Некто минусит нормальные посты и плюсит феерический бред -- Лепросус незримо с нами)
GoodTalkBot 25.08.2010 17:20 # +1
test7 25.08.2010 17:32 # 0
FYI test7 единственный свободный, остальные с циферками заняты - придумывать себе ники типа GoodMegaTaklSuperBot желания нет.
GoodTalkBot 25.08.2010 17:36 # 0
test7 25.08.2010 17:42 # +3
GoodTalkBot 25.08.2010 17:45 # −3
test7 25.08.2010 18:17 # +1
Вы у себя на Украине ещё не сделали сайт подобной тематике?
GoodTalkBot 25.08.2010 18:21 # −1
test7 25.08.2010 18:28 # 0
Куда мне до вас?
GoodTalkBot 25.08.2010 18:35 # −1
--
>да и ушли бы с этого сайта
не вам решать на каком сайте быть. и вы явно не старше меня, ибо переходить на оскорбления типа "выходцы из хохляндии" это удел школоло :)
test4 25.08.2010 18:43 # −2
Анонимус 25.08.2010 19:37 # +1
Зачем Вы зарегистрировали семь аккаунтов test1 -- test7, и понаставили себе плюсов?
Вам это не принесет счастья, а базу ГК Вы только что сделали на 7 записей тяжелее.
GoodTalkBot 25.08.2010 19:42 # +4
Анонимус 25.08.2010 19:49 # +1
bugmenot 26.08.2010 07:57 # +2
> не сделали сайт подобной тематике?
детектед. из под спеллчекера всё равно торчит :-D
а ниже нагой лепросус и «амбицилы» (амбициозные имбецилы?)
test7 25.08.2010 17:29 # 0
Пост - бред!
"хранить HTML в базе данных -- это ужасно!" - вы это расскажите всем коммерческим CMS, видимо, они получают деньги за ужасные решения.
Лепросус больше сюда не нагой, это последний пост, который я комментировал. Тут шайка амбицилов безграмотных тусуется.
Да, и маленькие ответики на тему корявости mysql_real_escape_string я дал - читайте остальное сами.
Анонимус 25.08.2010 17:36 # +3
к сожалению они не будут меня слушать.
Впрочем, работы с prepared statements Вы там тоже скорее всего не найдете. Большинство кода -- ужасно, но речь не об этом.
Думаю никто не будет спорить с тем, что в базе надо хранить семантику, а не представление. Потому что если дизайнер захочет изменить внешний вид, то прийдется перелапачивать данные. А это плохо. Хотя смешно говорить про плохие и хорошие решения в мире php.
Я Вас спросил без оскорблений: чем этот код лучше mysql_real_escapse_string?
Вы вместо ответа обозвали меня безграмотным, а потом еще и маленьким. Это некрасиво.
test7 25.08.2010 17:48 # 0
Ответ на mysql_real... см. выше.
А по поводу хранения представления в БД - а кто это делает или собирается?
Речь идёт только об форматированном HTML тегами текста. И в этом случае дизайнеру не мешает исправить дизайн или подобное.
И я не обзывал, всего лишь констатация: те вещи, которые вы приводили в аргумент - смехотворны, создаётся впечатление, что люди здесь прочитали книгу "Супер программер на PHP" и теперь знают все мировые истины, да и прислушиваться не хотят.
Анонимус 25.08.2010 17:52 # +1
не думаю. Я был вежлив, пока на мой простой вопрос не получил презрительнгого ответа "займитесь ликбезом"
>>Ответ на mysql_real... см. выше.
спасибо
>>А по поводу хранения представления в БД - а кто это делает или собирается?
HTML это часть представления, если Вы не вкурсе.
>>Речь идёт только об форматированном HTML тегами текста
На мой взгляд тогда уже надо разрешить группу тэгов (стронг, пре итд) и уж таг script, link и img допускать точно не надо. А если нету тага script, link и img, то нету и кросс-сайт скриптинга. Разве нет?
>> те вещи, которые вы приводили в аргумент - смехотворны, создаётся впеч
какие именно вещи?
test7 25.08.2010 17:50 # 0
Если вы не совсем в теме, то предметного спора всё-равно не будет - лишь оскорбления.
Анонимус 25.08.2010 19:09 # +3
;)))
в одном Вы правы -- спор пора заканчивать
test7 25.08.2010 17:53 # 0
Поведение шакалов...
Он, вроде, был на вашей стороне или я ошибаюсь?
Анонимус 25.08.2010 17:55 # 0
GoodTalkBot 25.08.2010 18:00 # −1
test7 25.08.2010 18:15 # +1
Я очень много постов даже не комментирую, просто ставлю баллы за пост и комментарии!
Больше занятся не чем, чем создавать себе 5 (как вы говорите) или более аккаунтов и плюсовать и минусовать - я прослежусь сейчас от хохота.
GoodTalkBot 25.08.2010 18:22 # +1
test7 25.08.2010 18:31 # 0
Прослежусь - http://www.vseslova.ru/index.php?dictionary=ushakov&word=prosle jus
Анонимус 25.08.2010 19:11 # +4
>>Ананимус
>>обажаемой
...
>>Придётся ещё и русскому языку учить
круто
bugmenot 25.08.2010 19:24 # +2
LMAO
Анонимус 25.08.2010 13:31 # +3
>>, то можно избежать и XSS.
Ах, я понял, понял. Эта замена еще защищает код от переполнения памяти, ускоряет загрузку в 25% и делает мои волосы на 73.5% более шелковистыми
leprosus 25.08.2010 13:35 # +1
И повторюсь ещё раз - это старый алгоритм (да, он не повысит производительности, да он не вырастит на лысине волос), но его обхода до сих нет.
Анонимус 25.08.2010 13:37 # −3
в замене кавычки?
Разве не это же самое делает mysql_escape_string? Зачем изобретать велосипед?
А вообще это все детский сад. Надо использовать prepared statements с параметрами, и SQL инъекция станет немыслима впринципе.
И расскажите пожалуйста, причем тут XSS?
leprosus 25.08.2010 13:48 # +2
На тему велосипеда - и да, и нет: код фактически делает экранирование, если много текста, то растёт объём БД и замедляется работа скрипта, но при грамотном использовании этого алгоритма нет возможности провести SQL-инъекций, так же как и XSS (но не на 100%).
mysql_escape_string - это не панацея!
Повторюсь ещё раз: это очень старый подход, ОЧЕНЬ!
По поводу детского сада - соглашусь, как код так и комментаторы - сплошные ясли.
И снова соглашусь: "Надо использовать prepared statements" - это верный путь!
А давать ответы "причём XSS или почему так" я не стану, сайт посвящён говнокоду, в данном примере его я не вижу, если нужна информация по безопасности, то ищите на англоговорящих ресурсах - её полно.
Анонимус 25.08.2010 13:52 # −2
возможно)
>> так же как и XSS (но не на 100%
какое отношение этот алгоритм имеет к кросс-сайт скриптингу?
>>mysql_escape_string - это не панацея!
приведите пожалуйста пример ситуации, когда этот чудесный алогоритм поможет, а escape_string не сработает
>>Повторюсь ещё раз: это очень старый подход, ОЧЕНЬ!
когда не было prepared statements и mysql_escape_string?
>> если нужна информация по безопасности, то ищите на англоговорящих ресурсах - её полно.
а что там искать? "как волшебный алгоритм спасет от XSS"?
leprosus 25.08.2010 14:00 # −1
Анонимус 25.08.2010 14:09 # 0
Вы приходите, и говорите: "у слона три уха".
Я спрашиваю Вас: а почему Вы так думаете?
А Вы: поищите в Интернете, займитесь ликбезом.
Вы кащенит?
leprosus 25.08.2010 14:14 # 0
Рассказывать почему я не стану (см. выше).
PS: жаргон используйте для пользователей вашего возраста, думаю, GoodTalkBot "кащенит" лучше поймёт.
Анонимус 25.08.2010 14:17 # 0
GoodTalkBot 25.08.2010 13:56 # −4
Анонимус 25.08.2010 14:18 # +1
GoodTalkBot 25.08.2010 14:20 # −1
Lure Of Chaos 25.08.2010 21:39 # 0
безумные, потому что минусуют только ради минусов
GoodTalkBot 25.08.2010 21:46 # +2
Lure Of Chaos 25.08.2010 21:48 # −1
GoodTalkBot 25.08.2010 21:54 # +1
Анонимус 25.08.2010 22:36 # +1
от http://govnokod.ru/user/2034 до http://govnokod.ru/user/2044
Lure Of Chaos 26.08.2010 01:02 # 0
Анонимус 26.08.2010 01:55 # +2
Тут нужна эвристика.
С одного ip регаешься 10 в течение получаса? Минус один к карме.
В одной зоне все почты? еще минус один.
Если наберется минус пять -- заморозить IP (или доменную зону в почте) на сутки
bugmenot 26.08.2010 05:11 # 0