Webmaster BG   SEO оптимизация

Go Back   Webmaster BG > Web Development > Програмиране

Reply
 
Thread Tools Display Modes
  #1  
Old 24-09-2007, 10:11 PM
bgkulinar's Avatar
bgkulinar bgkulinar is offline
Кърти, чисти,
 
Join Date: Mar 2007
Posts: 4,386
bgkulinar is a jewel in the roughbgkulinar is a jewel in the roughbgkulinar is a jewel in the roughbgkulinar is a jewel in the rough
Send a message via ICQ to bgkulinar Send a message via Skype™ to bgkulinar
Default Частична защита срещу SQL injection с .htaccess

Нещо много просто, но ефективно срещу SQL injection. За да може да ползвате кода, трябва да имате Apache сървър, включен mod_rewrite и естествено възможност за промяна на .htaccess. Намирате
Code:
Options +FollowSymlinks
RewriteEngine On
и на следващия ред слагате
Code:
RewriteCond %{QUERY_STRING} union [NC,OR]
RewriteCond %{QUERY_STRING} select [NC,OR]
RewriteCond %{QUERY_STRING} truncate [NC,OR]
RewriteCond %{QUERY_STRING} drop [NC,OR]
RewriteCond %{QUERY_STRING} update [NC]
RewriteRule .* %{REQUEST_URI}? [R,L]
По този начин избягвате възможността да ви направят SQL injection чрез GET.

N.B.!!! Внимателно прегледайте вашите URL да не съдържат някоя от думите: union, select, truncate, drop, update, защото ще блокирате и тях!!!

Тествано под Apache 1.3.XX, скоро ще тествам дали върви под двойката.

Приемам всякакви забележки, които могат да доведат до подобряване на кода.
Reply With Quote
  #2  
Old 24-09-2007, 10:37 PM
georgimateev georgimateev is offline
Senior Member
 
Join Date: Feb 2007
Posts: 492
georgimateev is on a distinguished road
Default Re: Частична защита срещу SQL injection с .htaccess

не се занимавай с глупости, има си mod_security http://www.modsecurity.org/
Reply With Quote
  #3  
Old 24-09-2007, 10:46 PM
bgkulinar's Avatar
bgkulinar bgkulinar is offline
Кърти, чисти,
 
Join Date: Mar 2007
Posts: 4,386
bgkulinar is a jewel in the roughbgkulinar is a jewel in the roughbgkulinar is a jewel in the roughbgkulinar is a jewel in the rough
Send a message via ICQ to bgkulinar Send a message via Skype™ to bgkulinar
Default Re: Частична защита срещу SQL injection с .htaccess

Предполагам, че има доста хора, които не могат да го инсталират на своя хостинг, а сигурността не е глупости.
Reply With Quote
  #4  
Old 25-09-2007, 02:29 AM
predpriemach.com's Avatar
predpriemach.com predpriemach.com is offline
Senior Member
 
Join Date: Mar 2007
Posts: 410
predpriemach.com is on a distinguished road
Default Re: Частична защита срещу SQL injection с .htaccess

Code:
<head>
...
<!--$_INPUT['data'] = addcslashes(mysql_real_escape_string($_INPUT['data'], "%_");-->
</head>
това няма ли да свърши същата работа ?
Reply With Quote
  #5  
Old 25-09-2007, 09:57 AM
bgkulinar's Avatar
bgkulinar bgkulinar is offline
Кърти, чисти,
 
Join Date: Mar 2007
Posts: 4,386
bgkulinar is a jewel in the roughbgkulinar is a jewel in the roughbgkulinar is a jewel in the roughbgkulinar is a jewel in the rough
Send a message via ICQ to bgkulinar Send a message via Skype™ to bgkulinar
Default Re: Частична защита срещу SQL injection с .htaccess

Няма да свърши същата работа. Освен това е PHP код, а дадения от мен код е за Apache .
Reply With Quote
  #6  
Old 25-09-2007, 10:48 AM
kuzmanin kuzmanin is offline
Senior Member
 
Join Date: Aug 2007
Location: София, България
Posts: 520
kuzmanin is on a distinguished road
Default Re: Частична защита срещу SQL injection с .htaccess

predpriemach.com е прав, SQL injection е опасен само в sql заявки и точно там е мястото за неутрализирането му. За PHP, ползването на mysql_real_escape_string, върху стойности получени от 'враждебна среда' при генерирането на заявката е напълно достатъчно:

http://bg2.php.net/mysql_real_escape_string
Reply With Quote
  #7  
Old 25-09-2007, 12:31 PM
bgkulinar's Avatar
bgkulinar bgkulinar is offline
Кърти, чисти,
 
Join Date: Mar 2007
Posts: 4,386
bgkulinar is a jewel in the roughbgkulinar is a jewel in the roughbgkulinar is a jewel in the roughbgkulinar is a jewel in the rough
Send a message via ICQ to bgkulinar Send a message via Skype™ to bgkulinar
Default Re: Частична защита срещу SQL injection с .htaccess

OK, не споря, че PHP трябва да се пише така, че да не допуска SQL injection. Не споря за това, че има модули, които подобряват сигурността на Апачи сървър. Просто съм дал прост и лесен начин за избягване на SQL injection за хора, които няма познания по PHP или други езици, на които им вървят сайтовете, но имат Apache server.

Освен това не съм съвсем сигурен, че mysql_real_escape_string() би помогнало в случаи като този:
Code:
http://www.peyron.com/release.php?id=-26+union+select+1,2,3,concat(version(),user()),database(),6,7,8/*
Reply With Quote
  #8  
Old 25-09-2007, 01:05 PM
kuzmanin kuzmanin is offline
Senior Member
 
Join Date: Aug 2007
Location: София, България
Posts: 520
kuzmanin is on a distinguished road
Default Re: Частична защита срещу SQL injection с .htaccess

Ето проба на този хак с 'mysql_real_escape_string':

http://www.bulgarian-offers.com/cached_page.php?page_id=-26+union+select+1,2,3,concat(version(),user()),dat abase(),6,7,8/*

резултата е следния:
SELECT <колона> FROM <таблица> WHERE id = '-26 union select 1,2,3,concat(version(),user()),database(),6,7,8/*'
Reply With Quote
  #9  
Old 25-09-2007, 05:52 PM
georgimateev georgimateev is offline
Senior Member
 
Join Date: Feb 2007
Posts: 492
georgimateev is on a distinguished road
Default Re: Частична защита срещу SQL injection с .htaccess

@bgkulinar хостинг без mod_security не съм ползвал никога, съмнява ме и да ползвам. То тоя мод вече си е в default инсталацията даже.

А пък mysql_real_escape_string е deprecated и от PHP6 нататък няма да я има, барабар с magic_quotes, safe_mode, register_globals и т.н. така че не разчитайте на нея. Има много по-добри решения като:
htmlspecialchars (лекува и XSS)
htmlentities (лекува и XSS, иска и правилен енкодинг)
regular expressions (лекува и логически грешки, но трябва да се внимава. Ако се напише кадърно, ще те спаси и от XSS)
addslashes (лекува само SQL Injection)
strip_tags (лекува само XSS)
Reply With Quote
  #10  
Old 25-09-2007, 05:57 PM
georgimateev georgimateev is offline
Senior Member
 
Join Date: Feb 2007
Posts: 492
georgimateev is on a distinguished road
Default Re: Частична защита срещу SQL injection с .htaccess

А сега пък като се замислих тия SELECT, DROP, TRUNCATE етц ми е много интересно как ще ги изпълниш, при положение, че PHP няма право да изпълнява повече от една заявка в една mysql_query() команда (именно поради тази причина). Т.е. ти филтрираш нещо, което така или иначе няма как да стане и то в ситуацията, когато си си взел некачествен хостинг с някой бастун администратор
По-скоро филтрирайте за
Code:
' or 1 #
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Търся PHP програмист, който има познания и в областта на .htaccess Liddel Пазар 0 12-02-2008 10:54 AM
12 съвета за защита на вашия Wordpress блог ronson Програмиране 0 06-02-2008 01:44 PM
Редирект от .htaccess nullsoft Администриране 4 10-10-2007 05:24 PM
Закон за защита на потребителите - протест oggin Бизнес в Интернет 54 10-08-2007 11:25 AM


All times are GMT +3. The time now is 11:47 PM.

IT Новини   Реклама в Интернет   Web Design   SEO Оптимизация   Homepage.bg   Интернет Реклама   VPS   Хостинг   cPanel Hosting   Expired Domains   SEO Конференция

Powered by vBulletin® Version 3.7.6
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.