SecureBlog

 
 

mod_rewrite спасает от атак sql-injection?

 

Дата: 25.08.2008, Категория: Кодинг

 

Написал этот пост для блогера с ником DimoninG, так как отвечать на один из его вопросов в комментариях было не удобно.
DimoninG пишет руководство по созданию собственного блога на php. Он считает, что возможно защититься от атак sql-injection, просто используя mod_rewrite, чем вводит многих в заблуждение.
Цитата:
Если хакер попытается ввести в адрес не буквенно-цифровой символ, то сервер прервет запрос сразу же. То есть заботиться об этом в самом движке уже не надо.

Просто в данном случае мне кажется, что при записи в .htaccess вида A-Za-z0-9_ нельзя подставить никакую sql-inj.
Приведите ее пример, пожалуйста, который бы срабатывал и при этом хакал или хотя бы вешал двигло?.. Кроме подставления всякого бреда типа ’sdfsdfwerekjhf’, запись о котором просто не найдется в базе данных. Ну и без всякого бреда, типа переполнение буфера интерпретатора, я не знаю :)
Даже кавычку не подставить - сразу вылезет ошибка веб-сервера.

В какой-то степени, это правда. Но! Это ГРУБЕЙШАЯ ошибка программистов. Взломщик может подобрать запрос вида index.php?category=[sql-inj] (к примеру), тут никакой mod_rewrite не поможет.
НИКОГДА нельзя доверять данным, получаемым со стороны клиента! Ибо их можно подделать. Что ж, будем действовать "от противного", то есть напишем заведомо небезопасасный код, в котором не будем фильтровать входящие данные.

Просили пример? Получайте.

Рассмотрим часть кода, отвечающую за выборку категорий для блога. Итак, создаем 2 файла index.php и .htaccess. В .htaccess прописываем следующее правило для mod_rewrite:

RewriteEngine on
RewriteRule ^(category)/([A-Za-z0-9_]+)/$ index.php?category=$2 [L]


Теперь к категориям можно будет обращаться так: http://site/category/category_1/.
Создаем бд 'blog' и прописываем туда две таблички - categories (здесь будут храниться категории), и admin (допустим, здесь у нас будет храниться информация о доступе админа).

CREATE TABLE `categories` (
`id` int(3) NOT NULL auto_increment,
`url` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
PRIMARY KEY(`id`)
);

INSERT INTO `categories` VALUES (1, 'category_1', 'Первая категория');
INSERT INTO `categories` VALUES (2, 'category_2', 'Вторая категория');
INSERT INTO `categories` VALUES (3, 'category_3', 'Третья категория');

CREATE TABLE `admin` (
`id` int(3) NOT NULL auto_increment,
`login` varchar(32) NOT NULL,
`password` varchar(32) NOT NULL,
PRIMARY KEY(`id`)
);

INSERT INTO `admin` VALUES (1, 'blog_admin', '1a1dc91c907325c69271ddf0c944bc72');

Пишем код, отвечающий за показ категорий. index.php:

<?php
// подключаемся к бд
$db = mysql_connect('localhost','root','password') or die();
mysql_select_db('blog',$db) or die();

/*
  Пропускаем часть кода. Оставляем случай с выборкой категорий
*/

// определяем, какую категорию показывать
if(isset($_GET['category'])) {
  $category = $_GET['category']; // никаких проверок не делаем
  // формируем запрос на выборку названия категории
  $q = mysql_query("SELECT title FROM categories WHERE url='$category' LIMIT 0,1");
  if(mysql_num_rows($q) != 0) {
  $r = mysql_fetch_object($q);
    echo 'Текущая категория: '.$r->title; // выводим категорию
  } else { echo 'Категория отсутсвтует'; }
} else {
  // выводиим все категории
  $q = mysql_query('SELECT url,title FROM categories ORDER BY id DESC');
  if(mysql_num_rows($q) != 0) {
    while($r = mysql_fetch_assoc($q)) {
      echo "<a href='/category/".$r['url']."/'>".$r['title']."</a><br>";
    }
  } else { echo 'Категорий нет'; }
}
?>


Код прокомментирован, так что объяснять что да как, не буду. Как вы уже заметили, мы получаем значение $_GET['category'], совершенно не проверяя его. В результате получаем потенциальную уязвимость sql-injection.
Расскажу подробнее. Как и говорил товарищ DimoninG, при следующем обращении к категории - http://site/category/category_1/ - мы получаем строку "Текущая категория: Первая категория", тут все нормально. Теперь попробуем подставить кавычку вместо "category_1" - как и ожидалось, мы получаем 404 ошибку apache, то есть мы не можем произвести атаку.
А теперь внимаение... Что мешает злоумышленнику подобрать запрос вида http://site/index.php?category=' ? Правильно, ничего. Результом будет ошибка MySQL. Далее, злоумышленник будет пытаться произвести атаку, подбирая запрос к бд.
/index.php?category=test'+or+1=1/* - получим "Текущая категория: Первая категория"
/index.php?category=test'+union+select+1/* - получим "1"
/index.php?category=test'+union+select+concat(login,0x3a,password)+from+admin+limit+0,1/* - В итоге подобрали примерно такой запрос, который выведет нам логин и md5 хэш пароля админа (admin:1a1dc91c907325c69271ddf0c944bc72).


Защититься можно, проверяя входящие данные, в нашем случае $_GET['category']. Например, так:

if(eregi("[^a-z0-9_-]",$_GET['category'])) { // продолжаем работать } else { die(); }

Рекомендуется почитать побольше про sql-injection, да и про то, как защищать скрипты, тоже следовало бы почитать, ибо такие ошибки, не редко, приводят к очень плачевным последствиям.

 


DimoninG 25.08.2008
Мой ник пишется не так, уважайте собеседника, что ли.

Мой ответ: http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-1.html#comment-1298


c0nst 25.08.2008
DimoninG, извини, ошибся с ником. Уже поправил.


Corwin 07.09.2008
странно что кодер этого не знал. могу подтвердить - в большинстве случаев запросы подбираются крайне легко, а если и нет, то по возможности скачиваем сорцы движка и все.


Сыроедение, голодание, здоровый 20.10.2008
Статья очень полезная. +1 аффтару. Пиши исчё


Алексеева 23.01.2009
Спасибо!написали для одного человека,а помогли многим!


Евгений Че 12.03.2009
Спасибо, интересный пример.


Phobos 28.10.2009
Действительно полезное замечание! Я тоже всегда надеялся на мод_рерайт, а, как оказалось, это не верно!
Спасибо!


stas 19.11.2009
Странный if получился!
Если есть посторонние символы то продолжаем работать!!!
Мне кажется, что в этом регулярном выражении что то не так [^a-z0-9_-].


хостинг 03.04.2010
хостинг css серверов регистрация доменов третьего уровня <a href="http://hosting.miheeff.ru">хостинг</a> сайтов hosting.miheeff.ru платный хостинг http://hosting.miheeff.ru хостинг css серверов регистрация доменов третьего уровня


fishforex 01.07.2011

I really wanted to expand my gratitude for forex signals which have taken my family and I great financial success. Smartfxsol and track record are just fantastic. I wanna keep it up.

check it on smartfxsol.com


betathome 21.07.2011
I like secureblog.org, bookmarked
<a href=http://www.buzzfeed.com/betathome/bet-at-homecom-sign-up-now-and-recieve-50-free-3sym>bet et home</a>


backlink service 25.08.2011
check backlink seo jobs <a href=http://xrumerservice.org>backlinks</a> backlinks checker


eToro 06.09.2011
Now secureblog.org is one of my fav websites
<a href=http://www.youtube.com/watch?v=ZdlC81PqBbc>forex trading platform</a>


home loans 13.09.2011
Make your own life easier take the business loans and everything you need.


металлоконструкции 29.09.2011
Ой, благодарю


Lazy Larry Forex 03.11.2011
&#1059; &#1090;&#1077;&#1073;&#1103;&#1086;&#1095;&#1077;&#1085;&#1100; &#1073;&#1086;&#1083;&#1100;&#1096;&#1086;&#1081; &#1089;&#1072;&#1081;&#1090; , &#1056;&#1072;&#1076; &#1103; &#1079;&#1072;&#1084;&#1077;&#1090;&#1080;&#1083; &#1077;&#1075;&#1086; &#1095;&#1077;&#1088;&#1077;&#1079; Yahoo.


sootomiaEleli 05.11.2011
iIesRziGm <a href="http://www.activitiesinsedona.com">ugg canada</a> qLmmMtwIg <a href=http://www.activitiesinsedona.com>uggs on sale</a> gOhkIniRc http://www.activitiesinsedona.com


deathendege 06.11.2011
uJbctKcc <a href="http://www.romolafan.com">ugg boots uk sale</a> qJawjGof <a href=http://www.romolafan.com>ugg boots sale uk stores</a> yOmcsYgv http://www.romolafan.com


HydaySewIdere 09.11.2011
YaeMMojADewWPydK <a href="http://www.creativenonconformity.com">uggs</a> KhtLPlpPFvkMYfhX <a href=http://www.creativenonconformity.com>uggs</a> KrvIGjxSNbuVEwxT http://www.creativenonconformity.com


Submabben 09.11.2011
AYXNJIWEPU <a href="http://www.westfordareaneighbors.com">ugg boots clearance</a>NZWOEWEVQY <a href=http://www.westfordareaneighbors.com>ugg sale clearance</a>LAGVESTREI http://www.westfordareaneighbors.com


vevewmedgindy 16.11.2011
VvtEWshOUumZPgzATaiGRovA <a href="http://www.djhardyhard.com">ugg</a> DhvZBjsAQpjKWaiGRerYUeyH http://www.djhardyhard.com LonZWeeNXbpYRfdV


Enronyroold 18.11.2011
kChgKejsLvi <a href="http://www.littlefitness.com">ugg boots on sale</a> oUaoBlrqMon http://www.littlefitness.com pTugFxluEbe


Pretlerie 22.11.2011
eXolGzimEy http://www.itsgreattobeamason.org qQyiXsczPd <a href="http://www.itsgreattobeamason.org">ghds for sale</a> qBhcDdn


Duadsemeffell 26.11.2011
zDkcFrmNp http://coconinolpaz.org sYgzXbgYs http://www.barcodesolutionsgroup.com gKjaWmpLd http://www.barleygreen-store.com/ oQctFnlVe http://www.jabezglobal.net nKzfCdtJh http://www.atlantic-echo.com


Insardalirl 04.12.2011
bNikWqeeAb <a href="http://www.soulsituation.com">uggs outlet online</a> zLaqWyhkHv http://www.soulsituation.com vCieVjsxXq


dorritrustige 05.12.2011
2FdbQ8CfiT9 <a href="http://www.goodsamaritanlodge.org">uggs for sale cheap</a> 8SklG8GesX2 <a href="http://www.natscnaz.org/">uggs for sale</a>


CopeApapdow 08.12.2011
jVykAcjZg <a href="http://bofb-spg.com/forums/viewtopic.php?f=29&t=28250">ghd uk sale</a> tLowXvuCd <a href="http://www.cning.net/bbs//forum.php?mod=viewthread&tid=168709&extra=">cheap ghd straighteners</a> rKezJslCx <a href="http://www.retribute.info/forum/viewtopic.php?f=4&t=2095">ghd stockists uk</a> wCzrIamMy <a href="http://elitehouse.pl/forum/viewtopic.php?f=1&t=99453">cheap ghd straighteners</a> pKogPgzTs <a href="http://www.portofino-2.com/index.php?option=com_phocaguestbook&view=phocaguestbook&id=1&Itemid=71">cheap ghd straighteners</a> hLbyYykPi <a href="http://www.tabernaculodasnacoes.com.br/portal/index.php?option=com_phocaguestbook&view=phocaguestbook&id=4&Itemid=74">ghd sale uk</a> wZhzKzaFn <a href="http://www.unetwork.tv/maztrix/webboard/viewthread.php?tid=132366&extra=">ghd straighteners cheap</a> nEuyFlnYo <a href="http://arabgenerationofpeace.org/main/index.php?option=com_phocaguestbook&view=phocaguestbook&id=1&Itemid=9">ghd straighteners cheap</a> uVucBzfDy <a href="http://flowergirl.ch/index.php?option=com_phocaguestbook&view=phocaguestbook&id=1&Itemid=56">ghd</a> dYcbFoqCk <a href="http://munic-recordz.com/index.php?option=com_phocaguestbook&view=phocaguestbook&id=1&Itemid=187&lang=en">ghd</a> tRcmXmoUc <a href="http://blacklikeus.com/bitbosses/index.php?topic=26553">ghd straighteners cheap</a> xKliJwcUu <a href="http://servitsales.com/WBIForum/index.php?topic=217496">ghd uk sale</a> eBwgZiiVa <a href="http://www.selenagomezweb.starszz.org/forum/index.php?topic=46052">ghd sale uk</a> bVvjTlrMg http://jghost.net/forum/viewtopic.php?f=2&t=261219 rEtvIzzXo http://www.beltboard.com/board/index.php?topic=19987 lRcfEtjPw http://stephen.rapidboards.com/index.php?act=ST&f=1&t=16510 dEvzMrmKw http://www.tradison.ru/forum/viewtopic.php?f=2&t=94670 mPezHwpOu http://www.hisaabu.com/viewtopic.php?f=6&t=104233 aHxfOynSt http://memoryimprovementinfo.com/forum/index.php?topic=43809 lIaxRfnBg http://www.pamperedprimatesandk9s.com/forum/viewtopic.php?pid=49599 wXigCncAo http://www.londonisoc.com/forum/viewtop


avermannybrex 10.12.2011
BCTZNUGWTVPOU <a href="http://www.ebmdevmag.com/ugg-store-uk-c-42.html">UGG Store UK</a> PWNYRBJZBJMPJ http://www.billacakes.com/


motIncanktomo 16.12.2011
ANHZGLQLTR <a href="http://chyazicf34.shareblog.net/The-first-blog-b1/ugg-boots-uk-sale-Will-Possibly-be-To-The-Slicing-Trend-Border-b1-p2.htm">ugg boots uk sale</a> ABMSOOMEWA http://www.migente.com/your_page/blog/view_posting.html?pid=1500000&profile_id=6813436&profile_name=experime90&user_id=6813436&username=experime90


slosseIrrarty 22.12.2011
DGBICZYJEU <a href="http://gaylebi.net/blogs/entry/discounted-uggs-hurlings-I">cheap uggs online</a> JMAPBMHNCK http://uggsonclearancesale00.bloggd.org/2011/12/22/ugg-boots-for-cheap/ FWOBKUUWCO <a href="http://asianpornstream.com/asian/blogs/entry/uggs-boots-outlet-truepenny-Q">ugg factory outlet</a> TMGOTUDWGX http://www.polytechconnect.com/blogs/entry/ugg-australia-outlet-22tk


sedneestmaype 23.12.2011
tT <a href="http://www.cheapuggsforwoman1.sitew.com/#canada_goose_Timberland.A">canada goose parka</a> lC http://canadagoosetrilliumparka.yolasite.com/


unsulushigede 27.12.2011
fk0 <a href="http://www.jukeboxalive.com/blog.php?blog_id=4772405">ugg sales</a> qa7 http://maarsnews.in/2011/12/27/uggs-on-sale-as-a-famous-enterprise/ wh6 <a href="http://my-bilingual.com/wordpress/uggbootsoutletstores22/2011/12/27/ugg-boots-sale-the-way-it-gets-well-known-on-earth/">ugg boots sale</a> tp6 http://uggbootscheap.medykblog.pl/uggs-outlet-stores-on-internet-website/


Pypeabsesia 27.12.2011
DJDBXWKOZE <a href="http://www.bulgariannetwork.com/social/blogs/629/6278/uggs-outlet-stores-sericins-z">uggs outlet</a> DZIIYVYUQQ http://www.dwaiha.net/se/index.php/blogs/617/1150/uggs-outlet-reseparated-z NHCLFAVBNS <a href="http://www.radiobasket.com/blogs/entry/ugg-discount-boots-sericins-O">cheap uggs online</a> NIMWBETRAN http://ominfosolutions.in/blogs/685/5778/discount-uggs-boots-strawman-h


Assildcrece 28.12.2011
FQFCTKZBVRTLA <a href="http://nituda.net/blogs/entry/uggs-on-sale-cheap-truepenny-O">uggs sale women</a> ESZPESBYQOULH http://ads.regie-cydonia.com/blogs/entry/uggs-on-sale-for-women-strawman-K ZWFULEDETBZFS <a href="http://web85.login.homepage-hoster.de/blogs/entry/uggs-boots-clearance-reseparated-X">ugg boots clearance sale</a> LYUJIZUFPVOJQ http://www.friendzin.com/blogs/1620/21447/ugg-boots-clearance-usa-truepenn


fusTrupsFug 30.12.2011
wZq <a href="http://blog.bodybuilding.com/seedcase34/2011/12/29/buy_wintertime_shoes_at_a/">uggs uk</a> cSw http://aafjrb2n.facebook.joyent.us/index.php?p=blogs/viewstory/40373 bVh <a href="http://uggbootscheapsale1.sarjakuvablogit.com/2011/12/30/ugg-sale-in-addition-to/">ugg sale</a> kZe http://sahabat.com/blogs/2824/23212/ugg-sale-50up


Sconesmesseri 02.01.2012
oRa <a href="http://www.myescortboy.com/network/blogs.php?action=show_member_blog&ownerID=1456">cheap ugg boots</a> vTe http://projectfather.com/blogs/entry/cheap-ugg-boots-online-23ms jFz <a href="http://yanasoo.com/uggbootscheapsale1/blog/cheap-ugg-boots-uggs/">cheap ugg boots</a> rPv http://sspffc.com/index.php/blogs/2639/36601/cheap-ugg-boots-for-women-truepe


ratreclurge 04.01.2012
kC3 <a href="http://rayzzz.com/blogs/entry/cheap-uggs-boots-sericins-W">ugg boots</a> uR0 http://www.vuxus.com/uggssalecheap/blog/cheap-ugg-boots-for-women-equipment/


Dindwrimi 10.01.2012
tIe <a href="http://blog.mdabdurrahman.com/?u=uggsuksale">uggs</a> aOq http://uggbootscheapsale23.blogcitoyen.fr/2012/01/10/ugg-uk-sale-consider/ xBp <a href="http://latinprofiles.com/blogs/6197/99863/ugg-boot-outlet-qg77">ugg boots outlet</a> fYj http://64.131.67.87/index.php?do=/uggsuksale/blog/obtaining-began-with-ugg-boots-outlet-boots/ tOu <a href="http://network.studio11chicago.com/uggsuksale/blog/get-cheap-stylish-plus-practical-ugg-boots-sale-online/">ugg boots sale</a> oCx http://www.edtechtesol.org/elgg/pg/blog/read/602757/ugg-boot-sale-vi36 bQn <a href="http://www.vulgarise.com/blogs/5948/52532/ugg-sale-kc72">uggs sale uk</a> bGy http://leadingthepack.net/social/pg/blog/read/38659/ugg-sale-vc40 oKa <a href="http://uggbootsuk10.blogage.de/entries/2012/1/10/Uggs-2011-Winter-Collection-Online">cheap uggs</a> vIx http://ugguksalecheap.enterprisebusinessexperts.biz/2012/01/10/can-you-really-find-cheap-uggs-boots-for-sale/ mIi <a href="http://rockonnect.com/pg/blog/read/72272/ugg-boots-rx95">uggs uk</a> oPx http://www.blogfreeblog.com/blog.php?user=erytdcxdw7&note=52857


Gearvekef 16.01.2012
sO6 <a href="http://www.aturf.com/index.php/member/21953/">hermes kelly</a> gA0 http://www.vilago21.com/event/Hermes+Sacks+supplying+fashion_+cost+and+ideal+obtaining+solutions/233294/profile dP5 <a href="http://www.replicagucci1216.sitew.com/gucci_tote.D.htm">gucci belt bag</a> fA2 http://www.pitching.com/member/257475/ mJ0 <a href="http://www.improper.com/member/17631/">gucci backpacks</a> lD2 http://www.donnabalsan.com/index.php/member/25179/ pW9 <a href="http://www.malibumag.com/member/49393/">gucci bag outlet</a> aW4 http://www.artifolio.com/replicagucci116/33346/with-hold-replica-gucci-handbags-these.html


Obselfelommef 05.02.2012
AAKPXUJTSQ <a href="http://www.nutmegit.com/member/14387">chanel purses for sale</a> VWAYTAGRII http://niccora.jp/insanityworkout203/2012/02/03/chanel-purses-cures-for-your/


scedeplen 07.02.2012
CCHURNEZZE <a href="http://www.estylers.net">cheap louis vuitton handbags</a> CUFEZVCBTE http://www.estylers.net


Accermalmdeva 08.02.2012
CAASINDSJR <a href="http://forums.realmacsoftware.com/index.php/member/271414/">gucci outlet</a> FPDOTPUODH http://manomio.com/index.php/member/49075/


SteeliMit 08.02.2012
STNTXWOJXT <a href="http://taxi.ca/index.php/member/18660/">hermes birkin replica</a> WFLONGFNRC http://www.telemundovip.com/ee/member/80117/


hekmayoky 09.02.2012
MYKOTBNSPV <a href="http://www.nampakiwanis.org">authentic louis vuitton</a> YYUKLTNXSO http://www.nampakiwanis.org


guccencefatef 09.02.2012
cqK <a href="http://altafhussain.net/index.php?do=/hermeshandbags1188/blog/hermes-bag-and-hawthorn-power/">hermes bag</a> aaT http://www.withoutthestress.com/member/18624


pierveVar 10.02.2012
HWXAQISNAC <a href="http://www.nampakiwanis.org">louis vuitton</a> ZARQHBCJLP http://www.nampakiwanis.org


lalescawl 18.02.2012
[url=http://bisph.ru/]скачать бесплатно игру[/url]


BydayChed 22.02.2012
DzDWShUXGaEZArNC <a href="http://kyrgyzkonnection.com">louis vuitton replica</a> YpHVBwRGCqFEDiVC http://kyrgyzkonnection.com


Добавить комментарий

Заполните обязательные поля формы

Имя (*) Сайт

 

О блоге

  • Освещение проблем безопасности web приложений и серверов. Поисковая оптимизация.
    Ник: c0nst
    icq: 331699888

 

Рубрики

образцы кухонной мебели

RSS-лента

Друзья и партнеры

порно бесплатное без

Счетчики

  • Rambler's Top100
  • Рейтинг@Mail.ru
Может уже пора сайт клана создать иссоздать кланительно на портале ClanHUB.ru! . Входи тут- ♥ Интим знакомства без регистрации с телефоном сайта Lovn.ru . адреса секс шоп в москве . Гарантия окна пвх москва от Элит-м . Энвольтирование любовная магия - приворот на вино. Оплата по результату. . корм для животных |
© SecureBlog | Coded by c0nst