SlideShare a Scribd company logo
Чести проблеми в сигурността
      на уеб проектите

        Веселин Николов
            @dzver
За мен

   ●   Работя с компютри
   ●   Automattic
   ●   WordPress.com
Предистория
WordCamp Sofia
WordCamp Sofia
WordCamp Sofia
WordCamp Sofia
WordCamp Sofia




        - Хакнах си сайта
Сигурност
1. Пароли и хешове
2. XSS
3. XSRF
4. SQL Injection
Пароли
Пароли и хешове




          >30%
От сайтовете ползват пароли в
          явен вид.

http://readwrite.com/2009/12/16/rockyou_hacker_30_of_sites_store_plain_text_passwords
... и някой знае паролата ви.
Пароли и хешове
1. Пароли
Лоша идея: ...SET pass='$pass'
Лоша идея: md5( $pass )


Добра идея: crypt с добър алгоритъм,
случайна сол към всяка парола.
Пароли и хешове
Пароли и хешове
2. Нещо предвидимо + md5 без сол
md5( $user . $password );
Rainbow tables
Google attacks (Tonimir - @kisasondi)


3. md5 по нещо предвидимо
md5( $user_id )
Пароли и хешове
4. Забравени debugs
error_log( print_r( $_POST ) )
wp_mail( ..., ..., print_r( $_POST ) )
Таблици с дебъг информация
Той съхраняваше пароли в явен вид
Той ползва md5( $password );
XSS
XSS
  Име: <?php echo $_GET['name']; ?>


http://myproject.com/index.php?name
=<script>alert(1);</script>
XSS
XSS
●   Изпълняване на код от името на сайта
●   Кражба на login cookies
●   Кражба на лична информация
●   Deface, ако сте късметлии
XSS
<?php echo $name; ?>


vs


<?php echo esc_html( $name ); ?>
XSS
    В WordPress:
●   esc_html (~htmlspecialchars)
●   esc_url
●   esc_attr (~htmlspecialchars)
●   esc_js
XSS
Често срещани проблеми:
1. Непочистен output
2. Погрешна употреба на функции
3. Липса или неправилна валидация
4. Правописни грешки
XSS
Погрешна употреба на функции

<script>
var a = '<?php echo strip_tags( $a ) ?>'
XSS
Погрешна употреба на функции

<script>
var a = '<?php echo strip_tags( $a ) ?>'


$a = “'; alert(7) //”;
XSS
Погрешна употреба на функции

<?php echo json_encode( $a ) ?>
XSS
Погрешна употреба на функции

<?php echo json_encode( $a ) ?>


http://h43z.blogspot.com/2012/06/phps-
jsonencode-and-xss.html
XSS
Употреба на esc_* без валидация:

<script src=”<?php echo esc_url( $js ) ?>”>


където
$js = 'http://evil-project.com/js';
XSS
Неправилна валидация
1. Проверка вместо cast

if ( intval( $myfield ) )
   echo $myfield;


   // $myfield = '1 <script...';
XSS
Неправилна валидация на ID-та
2. Липса на ^ и $ в regexp

if ( ! preg_match( '/[a-z0-9_-]/i', $myfield ) )
   return 'You are trying to hack me!';


   // $myfield = '<script ...'
XSS
Същото с валидация на URL – script src
2. Липса на ^ и $ в RegExp

if ( preg_match ( '!https?://(www.)*good-host.com/js/!i',
$myjs)
http://dzver.com/bad.js?http://good-host.com/js/


if ( preg_match( '!^http://good-host.com!', $myjs )
http://good-host.com.dzver.com
XSS
Неправилна валидация на URL
3. Точката в RegExp е wildcard.

if ( preg_match ( '!^https?://(www.)*good-host.com/js/!i',
$myjs) ...
// $myjs = http://wwwwgoodhost.com/js
XSS
Неправилна валидация на URL
4. Позволен / в хост-а

if ( ! preg_match( '!^https?://[^.]+.whatever.com/.+$!i',
$url ) )
// $myjs = 'http://3254656436/or.whatever.com/evil.js'
// $myjs = '<script.../.whatever.com/'
XSS
Бонус - printf вместо sprintf / погрешен ред

echo htmlspecialchars( printf( $name ) )
XSS
Безопасно ли е това:

<script>
    var a = '<?php echo $_POST['a']; ?>'
</script>



                       ?
XSS + XSRF
Не е.

<form action=”http://good-host.com”>
  <input name=a value=”'; alert(7)//”>
</form>
<script>
  document.forms[0].submit()
</script>
XSRF
<img   src=”http://dzver.com/admin/?action=delete_user&id=17”>
Защита от XSRF
XSRF
Nonces - cryptographic number used only once


В WordPress:

$nonce= wp_create_nonce( 'my-nonce' );
$url = “...&nonce=$nonce”


if ( ! wp_verify_nonce( $nonce, 'my-nonce' ) )
   wp_redirect()
XSRF
Понякога трябва да си имплементирате
nonces сами

generate_nonce( $id ) {
    if ( empty( $_SESSION['nonces'][$id] ) )
       $_SESSION['nonces'][$id] = md5( salt .
       mktime() );
}
verify_nonce( $id, $nonce ) {
    return !empty( $_SESSION['nonces'][$id] ) &&
       $nonce == $_SESSION['nonces'][$id]
}
Eval, Extract и прочие
    Специфики за PHP програмисти
●   eval( “something_clever( {$_GET['a']}” )
●   extract( $_GET['a'] )
●   create_function( “return 7 == $_GET['a']” )
●   ``, system, assert, include, preg_replace
●   Много други.

    http://stackoverflow.com/questions/3115559/exploitable-php-functions
Пример
$sql = sprintf( “UPDATE users SET password
= '%s' WHERE user_id = %d”,
    $_POST['password'],
    $_SESSION['user_id'] );


mysql_query( $sql );
SQL Injection




        PREPARE
В WordPress имаме $wpdb->prepare
●
Защита
●   Не вярвайте на юзърски инпут
●   HTTPS
Защита
Въпроси?

More Related Content

Viewers also liked

Cambodian Dinner Night 15/11/08
Cambodian Dinner Night 15/11/08Cambodian Dinner Night 15/11/08
Cambodian Dinner Night 15/11/08camkh12
 
Cypris Chat 2010 Year End Presentation
Cypris Chat 2010 Year End PresentationCypris Chat 2010 Year End Presentation
Cypris Chat 2010 Year End Presentation
Mike McKay
 
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-KentCulture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
Emily Robson
 
Doug Altman 15 Jan09 V4
Doug Altman 15 Jan09 V4Doug Altman 15 Jan09 V4
Doug Altman 15 Jan09 V4
US Cochrane Center
 
Introduction Apache Solr & PHP
Introduction Apache Solr & PHPIntroduction Apache Solr & PHP
Introduction Apache Solr & PHP
Hiraq Citra M
 
Nimda Worm
Nimda WormNimda Worm
Nimda WormGoaway96
 
What can you do in second life
What can you do in second lifeWhat can you do in second life
What can you do in second lifeMike McKay
 
Pecha Kucha Nishinomiya #7
Pecha Kucha Nishinomiya #7Pecha Kucha Nishinomiya #7
Pecha Kucha Nishinomiya #7
Mike McKay
 
More amazing photoshop tut
More amazing photoshop tutMore amazing photoshop tut
More amazing photoshop tutShdwClaw
 
Bracebridge’s Convergence: The 4th Pillar
Bracebridge’s Convergence:  The 4th PillarBracebridge’s Convergence:  The 4th Pillar
Bracebridge’s Convergence: The 4th Pillar
Emily Robson
 
Law Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay DalmiaLaw Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay Dalmia
Vijay Dalmia
 
Introducción al Email Marketing
Introducción al Email Marketing Introducción al Email Marketing
Introducción al Email Marketing
krasis
 
WordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupWordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupVeselin Nikolov
 
Determining Your Community's Competitive Advantage For The Creative Sector
Determining Your Community's Competitive Advantage For The Creative SectorDetermining Your Community's Competitive Advantage For The Creative Sector
Determining Your Community's Competitive Advantage For The Creative Sector
Emily Robson
 
Ipr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth CreationIpr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth Creation
Vijay Dalmia
 
Amazing number3
Amazing number3Amazing number3
Amazing number3ShdwClaw
 
Cypris Chat - 20/20 Pecha Kucha
Cypris Chat - 20/20 Pecha KuchaCypris Chat - 20/20 Pecha Kucha
Cypris Chat - 20/20 Pecha Kucha
Mike McKay
 
Virtual World Integration Steps for EFL in Japan
Virtual World Integration Steps for EFL in JapanVirtual World Integration Steps for EFL in Japan
Virtual World Integration Steps for EFL in Japan
Mike McKay
 
PowerPoint Training - The power of visuals
PowerPoint Training - The power of visualsPowerPoint Training - The power of visuals
PowerPoint Training - The power of visuals
Linda Mkhize-Manashe
 

Viewers also liked (20)

Cambodian Dinner Night 15/11/08
Cambodian Dinner Night 15/11/08Cambodian Dinner Night 15/11/08
Cambodian Dinner Night 15/11/08
 
Cypris Chat 2010 Year End Presentation
Cypris Chat 2010 Year End PresentationCypris Chat 2010 Year End Presentation
Cypris Chat 2010 Year End Presentation
 
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-KentCulture, Economy, Community: A Cultural Plan for Chatham-Kent
Culture, Economy, Community: A Cultural Plan for Chatham-Kent
 
Doug Altman 15 Jan09 V4
Doug Altman 15 Jan09 V4Doug Altman 15 Jan09 V4
Doug Altman 15 Jan09 V4
 
Introduction Apache Solr & PHP
Introduction Apache Solr & PHPIntroduction Apache Solr & PHP
Introduction Apache Solr & PHP
 
Nimda Worm
Nimda WormNimda Worm
Nimda Worm
 
What can you do in second life
What can you do in second lifeWhat can you do in second life
What can you do in second life
 
Pecha Kucha Nishinomiya #7
Pecha Kucha Nishinomiya #7Pecha Kucha Nishinomiya #7
Pecha Kucha Nishinomiya #7
 
More amazing photoshop tut
More amazing photoshop tutMore amazing photoshop tut
More amazing photoshop tut
 
Bracebridge’s Convergence: The 4th Pillar
Bracebridge’s Convergence:  The 4th PillarBracebridge’s Convergence:  The 4th Pillar
Bracebridge’s Convergence: The 4th Pillar
 
Law Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay DalmiaLaw Of Industrial Patent Design In India by Vijay Dalmia
Law Of Industrial Patent Design In India by Vijay Dalmia
 
Introducción al Email Marketing
Introducción al Email Marketing Introducción al Email Marketing
Introducción al Email Marketing
 
WordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal MeetupWordPress Security @ Vienna WordPress + Drupal Meetup
WordPress Security @ Vienna WordPress + Drupal Meetup
 
Milieu
MilieuMilieu
Milieu
 
Determining Your Community's Competitive Advantage For The Creative Sector
Determining Your Community's Competitive Advantage For The Creative SectorDetermining Your Community's Competitive Advantage For The Creative Sector
Determining Your Community's Competitive Advantage For The Creative Sector
 
Ipr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth CreationIpr Indian Saga Of Wealth Creation
Ipr Indian Saga Of Wealth Creation
 
Amazing number3
Amazing number3Amazing number3
Amazing number3
 
Cypris Chat - 20/20 Pecha Kucha
Cypris Chat - 20/20 Pecha KuchaCypris Chat - 20/20 Pecha Kucha
Cypris Chat - 20/20 Pecha Kucha
 
Virtual World Integration Steps for EFL in Japan
Virtual World Integration Steps for EFL in JapanVirtual World Integration Steps for EFL in Japan
Virtual World Integration Steps for EFL in Japan
 
PowerPoint Training - The power of visuals
PowerPoint Training - The power of visualsPowerPoint Training - The power of visuals
PowerPoint Training - The power of visuals
 

Similar to Чести проблеми в сигурността на уеб проектите

5494 n nikolov_zashtita_ppt
5494 n nikolov_zashtita_ppt5494 n nikolov_zashtita_ppt
5494 n nikolov_zashtita_pptNikolai Nikolov
 
JavaScipt and AJAX Programming
JavaScipt and AJAX ProgrammingJavaScipt and AJAX Programming
JavaScipt and AJAX Programming
LogMan Graduate School on Knowledge Economy
 
Web Programming with JavaScript and Ajax
Web Programming with JavaScript and AjaxWeb Programming with JavaScript and Ajax
Web Programming with JavaScript and Ajax
LogMan Graduate School on Knowledge Economy
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BGsvilen.ivanov
 
B7 t7 arrays
B7 t7 arraysB7 t7 arrays
B7 t7 arrays
Asiya Petrova
 

Similar to Чести проблеми в сигурността на уеб проектите (8)

5494 n nikolov_zashtita
5494 n nikolov_zashtita5494 n nikolov_zashtita
5494 n nikolov_zashtita
 
5494 n nikolov_zashtita_ppt
5494 n nikolov_zashtita_ppt5494 n nikolov_zashtita_ppt
5494 n nikolov_zashtita_ppt
 
Anti SQLi
Anti SQLiAnti SQLi
Anti SQLi
 
JavaScipt and AJAX Programming
JavaScipt and AJAX ProgrammingJavaScipt and AJAX Programming
JavaScipt and AJAX Programming
 
Web Programming with JavaScript and Ajax
Web Programming with JavaScript and AjaxWeb Programming with JavaScript and Ajax
Web Programming with JavaScript and Ajax
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BG
 
B7 t7 arrays
B7 t7 arraysB7 t7 arrays
B7 t7 arrays
 
B7 t7 arrays
B7 t7 arraysB7 t7 arrays
B7 t7 arrays
 

More from Veselin Nikolov

Leadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayLeadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp Norway
Veselin Nikolov
 
Lessons from my work on WordPress.com
Lessons from my work on WordPress.comLessons from my work on WordPress.com
Lessons from my work on WordPress.comVeselin Nikolov
 
Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin Nikolov
 
NoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаNoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защита
Veselin Nikolov
 
20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш
Veselin Nikolov
 
Блоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоБлоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико Търново
Veselin Nikolov
 

More from Veselin Nikolov (7)

Leadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp NorwayLeadership for Developers, WordCamp Norway
Leadership for Developers, WordCamp Norway
 
Lessons from my work on WordPress.com
Lessons from my work on WordPress.comLessons from my work on WordPress.com
Lessons from my work on WordPress.com
 
Veselin word camp-romania-2014
Veselin word camp-romania-2014Veselin word camp-romania-2014
Veselin word camp-romania-2014
 
Разширения
РазширенияРазширения
Разширения
 
NoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защитаNoSQL бази от данни - възможности и приложение, дипломна защита
NoSQL бази от данни - възможности и приложение, дипломна защита
 
20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш20 начина да си убиеш блога, без да се усетиш
20 начина да си убиеш блога, без да се усетиш
 
Блоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико ТърновоБлоговете между двата блогкемпа във Велико Търново
Блоговете между двата блогкемпа във Велико Търново
 

Чести проблеми в сигурността на уеб проектите