Niedoszły Bibliotekarz
  przedstawia:


  Błędy userów,
       niedoróbki koderów


http://arek.bibliotekarz.com   WordCamp Gdaosk 2012
Pogadanka na licencji CC BY 3.0
• kopiowad, rozpowszechniad, odtwarzad i
  wykonywad utwór
• tworzyd utwory zależne
• użytkowad utwór w sposób komercyjny

      Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa 3.0 Polska.




                  http://www.slideshare.net/bibliotekarz
Główne psuje Internetu

         • Użytkownicy
         • Wykonawcy


Strony problemu będą się przenikać bo zarówno
jedni i drudzy mogą w kilku przypadkach
zepsuć to samo, choć różnymi metodami.
User mode = ON
<H1> ma byd jeden </H1>
Dwa
       akapity
          z
vs.   MS Word
       Ponad
       130 kb
DSC000234481.jpg
Jak wyszukad fotkę po tagach
alt =‘’” title=‘’DSC0234481.jpg”


                                   Pamiętajcie
                                   co zawiera
                                   EXIF

                                   miniaturki,
                                   lokalizacja,
                                   data,
                                   godzina,
                                   …
Kasuj co zbędne
Strona jest dla gościa
Banner




 Banner
Trudnozmienialne URL-e


http://lukrecjusz.pl/kuchnia/opinie-recenzja/produkty/



              i wygodne menu
Rozbójnicy
Skórki
Wtyczki
Widgety
Dodatki
…
User mode = OFF
• Nie szaled z
  typografią, znacznikami, wtyczkami.
• Oszczędzad miejsce na istotne treści.
• Przemyśled dla kogo strona i jaka nawigacja.
• Nadawad zdjęciom i linkom sensowne nazwy.
• Konwertowad teksty i zdjęcia.
• Uważad przy osadzaniu obiektów od
  innych, darmowe wtyczki, skórki, widgety
  (zwłaszcza z szyfrowanym kodem).
Koder mode = ON
Przynajmniej jest
jeden krój fonta !




No     dobrze     trzy    kroje
 z obowiązkowym Comic Sans MS
Jednolitośd języka na stronie
- ‘’Twoją stronę odwiedziło
  143245 guest’’
- ‘’poruszyd świadome
  używanie Read more…’’
- ‘’Komentarze 01.01.1970
  title text Twój komentarz’’
- ‘’Strona: 1 2 3 4 5...
  Następna » Glos 0.7 uses
  technologies including
  PHP’’
Twórz nowe motywy lub potomne
/*
Theme Name: Klusek Twenty Eleven
Description: Motyw potomny Twenty Eleven
Author: Klusek
Template: twentyeleven
*/
Standardy



• Wykorzystanie zaleceo schema.org
• Zgodnośd z RFC
Skórkowtyczkom dziękujemy


Wspieramy 404,
mogą przekazad zdecydowanie większą
wartośd niż prosty komunikat o błędzie.
Wrócisz po roku do kodu a tam…
      <code>
           cimcia()
           dumcia()
           trololo()
      </code>
a przecież można było:
joeplugin_post_pretty_title()
Zadbaj o oczy i umysł ;)
// komentuj żeby było wiadomo co do czego
<użyj>
     <formatowania kodu>
     <to pomaga naprawdę>
</użyj>
Wujowo ale jednakowo
Wersja 3.2.8 | Autor: Arne Brachhold |
 Odwiedź witrynę wtyczki | Settings | FAQ |
 Support | Donate

Wersja 0.1 | Autor: Ivan Kazandzhiev |
 Odwiedź witrynę wtyczki
Ilośd dodatków w head
1 plik ładuje się szybciej
<link rel='stylesheet' id='helion-ksiegarnia-css'
   href='http://…pro/css/ksiegarnia.css?ver=3.4.2' type='text/css‘
   media='all' /> 1431b
<link rel='stylesheet' id='helion-shortcodes-css'
   href='http://…pro/css/shortcodes.css?ver=3.4.2' type='text/css‘
   media='all' /> 895b
<link rel='stylesheet' id='helion-widgets-css'
   href='http://…pro/css/widgets.css?ver=3.4.2' type='text/css‘
   media='all' /> 688b
<link rel='stylesheet' id='helion-wyszukiwarka-css'
   href='http://…pro/css/wyszukiwarka.css?ver=3.4.2'
   type='text/css' media='all' /> 192b

CSS Sprite
Struktura
Wtyczka
    |- [css]
    |- [img]
    |- [js]
formularze
Kontrola poprawności wprowadzonych danych
  ok, ale bez blokady wysyłania.
W przypadku nieprzewidzianych danych ujawnia
  się dodatkowe pole dla opisu.
Każde pole formularza jednoznacznie opisane,
  podpowiedź (najlepiej kontekstowa, nie
  wymagająca zmiany) w polu edycji.
Po co gromadzid informacje nieużywane?
Weryfikacja przyjmowanych danych i uprawnieo
Informacja zwrotna
www-data@helion.pl (www-data) napisał:
HELION SA, 44-100 Gliwice, ul. Ko ciuszki 1C
Numer KRS 0000121256 S d Rejonowy w
Gliwicach, X Wydzia Gospodarczy Krajowego
Rejestru S dowego.
NIP 631-020-02-68, REGON: 271070648
Kapita zak adowy: 500100 z w ca o ci wp
acony
Ludzie łatwo giną
Twoje zamówienie ma status ‘’W drodze”

•   Czeka na akceptację
•   Zaakceptowane
•   Pakowanie
•   Wysyłka
•   Kurier
•   Dostarczone
‘’drobiazgi’’

wp_remote_get () vs. Curl
Dodatkowe tabele
Wiele wpisów w tabeli wp_options zamiast
  utworzenia tablicy
Inicjacja wtyczki i jej usuwanie
Różne konfiguracje serwerów użytkownika
Czytaj ze zrozumieniem
<meta http-equiv="x-dns-prefetch-control"
 content="off"/>

Chromium watches for an HTTP header of the
  form "X-DNS-Prefetch-Control" (with a vcase
  insensitive)alue of either "on" or "off."
Weryfikuj informacje
Cudowny lek anonimizujący wordpresa
remove_action('wp_head', 'wp_generator');
a w rss nr wersji zostaje :/

BTW zwróciliście uwagę na
 http://lukrecjusz.pl/.../css/ksiegarnia.css?ver=3.4.2


Błędy w plikach z repozytorium wordpress.org
Nie pobierają
Wikingowie przy ognisku
          opowiadają:


Im więcej przeprowadzisz testów w różnych
  środowiskach tym mniej masz wrogów.
Koder mode = OFF

• Typografia i jednolitośd językowa
• Czytanie ze zrozumieniem
• Weryfikacja źródła ograniczone zaufanie
• Jakośd tworzonego kodu i dokumentacji
• Korzystanie z dobrych praktyk i
  utrzymywanie standardów
• Przyjaznośd dla użytkownika
admin1
Porażki
Wdrażanie zmian bez zweryfikowanego
  backupu
Porządek w kopiach zapasowych, domenach i
  serwerach
Kopia robocza / testowa dostępna dla
  wyszukiwarek
Pokora względem czasu i umiejętności
Najczęstsze źródła problemów

• <meta name="generator" content="WordPress
  .old" />
• admin1
• UPDATE wp_users
      SET user_status = '$ranga'
      WHERE ID = $id”;
• domena.tld/wp-content/uploads/2010/02/
Brak aktualizacji
<channel>
<title>Ministerstwo Administracji i Cyfryzacji</title>
<atom:link href="http://mac.gov.pl/feed/" rel="self" type="application/rss+xml" />
<link>http://mac.gov.pl</link>
<description>Ministerstwo Administracji i Cyfryzacji</description>
<lastBuildDate>Tue, 09 Oct 2012 13:19:09 +0000</lastBuildDate>
<...>
<generator>http://wordpress.org/?v=3.4.1</generator>
         <item>


<channel>
<title>Kominek IN</title>
<atom:link href="http://www.kominek.in/feed/" rel="self" type="application/rss+xml" />
<link>http://www.kominek.in</link>
<description>Lifestyle, Kominek, High life, Uczucia</description>
<...>
<generator>http://wordpress.org/?v=</generator>
         <item>
Słabe hasła i dostęp
mnemotechnika Taniecz**, KMorgan%40
głUkłÓbaBzakaRmaSdłUhaS5
głupia kłótliwa babo za karę masz długie
hasło x (gdzie x = ulubiony date +%w)
+cAw4l:p

ssh sftp
zapisane hasła strona trzasła
Polityka bezpieczeostwa
Jeden wordpress jedna baza danych
Każdy prefix do tabel unikalny
Standardowe ścieżki do wp-config.php czy
  użytków jak PhpMyAdmin zmienione
Wzbogacone .htaccess
Właściwe prawa dostępu do plików i katalogów
Options All -Indexes
Godziny pracy we wrześniu:

         16 - 0.30
         (coś niecoś poprawiła bo już nie ma
         widocznych godzin wgrania plików)

         16 - 0.30
         ale raz jakiś banner wrzucił o 8 rano


          11 - 14
.htaccess
ServerSignature Off

# ograniczamy limit uploadu do 10mb
LimitRequestBody 10240000

# obsługa typowych błędów
ErrorDocument 404 /404.php
ErrorDocument 403 "<html><head><title>O
   NO!</title></head><body><br /><br /><h2><tt>403 Chyba
   coś nie zadzialalo :(</tt></h2></body></html>’’
ErrorDocument 500 /error.php
Prosto z codex
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+.php$ - [F,L]
RewriteRule ^wp-
  includes/js/tinymce/langs/.+.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ -
  [F,L]
# wycinka komentarzy z kosmosu
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-
  post.php*
RewriteCond %{HTTP_REFERER} !.*twoja-dom.ena*
  [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$
  [R=301,L]
# wycina metodę TRACE
RewriteCond %{REQUEST_METHOD} ^TRAC(E|K)
RewriteRule .* - [F]
# wycinka hotlinkowania
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER}
  !^http://(www.)?twoja-dom.ena/.*$ [NC]
RewriteRule .(gif|jpg|swf|flv|png)$
  http://twój.obrazek.jpg [R=302,L]

# przekierowanie na subdomenę www
RewriteCond %{HTTP_HOST} ^twoja.tld$ [NC]
RewriteRule ^(.*)$ http://www.twoja.tld/$1 [R=301,L]
# blokujemy dostęp do plików
<FilesMatch
   ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>

<files ^wp-config.php$>
Order deny,allow
deny from all
</files>
# global
User-agent: *
                                 robots.txt
Disallow: /cgi-bin/
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /wp-content/plugins/
Disallow: /wp-content/cache/
Disallow: /wp-content/themes/
Disallow: /trackback/
Disallow: /feed/
Disallow: /comments/
Disallow: /category/*/*
Disallow: */trackback/
Disallow: */feed/
Disallow: */comments/
Disallow: /*?
Allow: /wp-content/uploads/
Warto przejrzed
http://www.josiahcole.com/2007/07/11/almost-perfect-htaccess-file-for-wordpress-blogs/
http://codex.wordpress.org/Hardening_WordPress#Securing_wp-config.php
http://webhelp.pl/blog/jak-nie-pisac-wtyczek-i-szablonow-dla-wordpressa
http://blog.vokiel.com/css-minify-combine-zmniejszanie-laczenie-plikow-css-w-jeden
http://webfaces.pl/blog/wordpress-jako-cms-najczestsze-bledy-deweloperow
http://www.optart.pl/2011/12/wordcamp-2011
http://www.problogger.net/archives/2012/08/29/top-10-wordpress-security-myths
http://planetozh.com/blog/2009/09/top-10-most-common-coding-mistakes-in-wordpress-
    plugins/
http://perishablepress.com/5g-blacklist-2012/
Materiały użyte w przykładach
http://www.zombiesamurai.pl
http://wolnelektury.pl
http://mac.gov.pl
http://www.kominek.in
http://blog.kurasinski.com
http://hatalska.com
http://lukrecjusz.pl

Błędy userów, niedoróbki koderów

  • 1.
    Niedoszły Bibliotekarz przedstawia: Błędy userów, niedoróbki koderów http://arek.bibliotekarz.com WordCamp Gdaosk 2012
  • 2.
    Pogadanka na licencjiCC BY 3.0 • kopiowad, rozpowszechniad, odtwarzad i wykonywad utwór • tworzyd utwory zależne • użytkowad utwór w sposób komercyjny Ten utwór jest dostępny na licencji Creative Commons Uznanie autorstwa 3.0 Polska. http://www.slideshare.net/bibliotekarz
  • 3.
    Główne psuje Internetu • Użytkownicy • Wykonawcy Strony problemu będą się przenikać bo zarówno jedni i drudzy mogą w kilku przypadkach zepsuć to samo, choć różnymi metodami.
  • 4.
  • 5.
    <H1> ma bydjeden </H1>
  • 6.
    Dwa akapity z vs. MS Word Ponad 130 kb
  • 7.
  • 8.
    Jak wyszukad fotkępo tagach alt =‘’” title=‘’DSC0234481.jpg” Pamiętajcie co zawiera EXIF miniaturki, lokalizacja, data, godzina, …
  • 9.
  • 10.
    Strona jest dlagościa Banner Banner
  • 11.
  • 12.
  • 13.
    User mode =OFF • Nie szaled z typografią, znacznikami, wtyczkami. • Oszczędzad miejsce na istotne treści. • Przemyśled dla kogo strona i jaka nawigacja. • Nadawad zdjęciom i linkom sensowne nazwy. • Konwertowad teksty i zdjęcia. • Uważad przy osadzaniu obiektów od innych, darmowe wtyczki, skórki, widgety (zwłaszcza z szyfrowanym kodem).
  • 14.
  • 15.
    Przynajmniej jest jeden krójfonta ! No dobrze trzy kroje z obowiązkowym Comic Sans MS
  • 16.
    Jednolitośd języka nastronie - ‘’Twoją stronę odwiedziło 143245 guest’’ - ‘’poruszyd świadome używanie Read more…’’ - ‘’Komentarze 01.01.1970 title text Twój komentarz’’ - ‘’Strona: 1 2 3 4 5... Następna » Glos 0.7 uses technologies including PHP’’
  • 17.
    Twórz nowe motywylub potomne /* Theme Name: Klusek Twenty Eleven Description: Motyw potomny Twenty Eleven Author: Klusek Template: twentyeleven */
  • 18.
    Standardy • Wykorzystanie zaleceoschema.org • Zgodnośd z RFC
  • 19.
    Skórkowtyczkom dziękujemy Wspieramy 404, mogąprzekazad zdecydowanie większą wartośd niż prosty komunikat o błędzie.
  • 20.
    Wrócisz po rokudo kodu a tam… <code> cimcia() dumcia() trololo() </code> a przecież można było: joeplugin_post_pretty_title()
  • 21.
    Zadbaj o oczyi umysł ;) // komentuj żeby było wiadomo co do czego <użyj> <formatowania kodu> <to pomaga naprawdę> </użyj>
  • 22.
    Wujowo ale jednakowo Wersja3.2.8 | Autor: Arne Brachhold | Odwiedź witrynę wtyczki | Settings | FAQ | Support | Donate Wersja 0.1 | Autor: Ivan Kazandzhiev | Odwiedź witrynę wtyczki
  • 23.
  • 24.
    1 plik ładujesię szybciej <link rel='stylesheet' id='helion-ksiegarnia-css' href='http://…pro/css/ksiegarnia.css?ver=3.4.2' type='text/css‘ media='all' /> 1431b <link rel='stylesheet' id='helion-shortcodes-css' href='http://…pro/css/shortcodes.css?ver=3.4.2' type='text/css‘ media='all' /> 895b <link rel='stylesheet' id='helion-widgets-css' href='http://…pro/css/widgets.css?ver=3.4.2' type='text/css‘ media='all' /> 688b <link rel='stylesheet' id='helion-wyszukiwarka-css' href='http://…pro/css/wyszukiwarka.css?ver=3.4.2' type='text/css' media='all' /> 192b CSS Sprite
  • 25.
    Struktura Wtyczka |- [css] |- [img] |- [js]
  • 26.
    formularze Kontrola poprawności wprowadzonychdanych ok, ale bez blokady wysyłania. W przypadku nieprzewidzianych danych ujawnia się dodatkowe pole dla opisu. Każde pole formularza jednoznacznie opisane, podpowiedź (najlepiej kontekstowa, nie wymagająca zmiany) w polu edycji. Po co gromadzid informacje nieużywane? Weryfikacja przyjmowanych danych i uprawnieo
  • 27.
    Informacja zwrotna www-data@helion.pl (www-data)napisał: HELION SA, 44-100 Gliwice, ul. Ko ciuszki 1C Numer KRS 0000121256 S d Rejonowy w Gliwicach, X Wydzia Gospodarczy Krajowego Rejestru S dowego. NIP 631-020-02-68, REGON: 271070648 Kapita zak adowy: 500100 z w ca o ci wp acony
  • 28.
    Ludzie łatwo giną Twojezamówienie ma status ‘’W drodze” • Czeka na akceptację • Zaakceptowane • Pakowanie • Wysyłka • Kurier • Dostarczone
  • 29.
    ‘’drobiazgi’’ wp_remote_get () vs.Curl Dodatkowe tabele Wiele wpisów w tabeli wp_options zamiast utworzenia tablicy Inicjacja wtyczki i jej usuwanie Różne konfiguracje serwerów użytkownika
  • 30.
    Czytaj ze zrozumieniem <metahttp-equiv="x-dns-prefetch-control" content="off"/> Chromium watches for an HTTP header of the form "X-DNS-Prefetch-Control" (with a vcase insensitive)alue of either "on" or "off."
  • 31.
    Weryfikuj informacje Cudowny lekanonimizujący wordpresa remove_action('wp_head', 'wp_generator'); a w rss nr wersji zostaje :/ BTW zwróciliście uwagę na http://lukrecjusz.pl/.../css/ksiegarnia.css?ver=3.4.2 Błędy w plikach z repozytorium wordpress.org
  • 32.
  • 33.
    Wikingowie przy ognisku opowiadają: Im więcej przeprowadzisz testów w różnych środowiskach tym mniej masz wrogów.
  • 34.
    Koder mode =OFF • Typografia i jednolitośd językowa • Czytanie ze zrozumieniem • Weryfikacja źródła ograniczone zaufanie • Jakośd tworzonego kodu i dokumentacji • Korzystanie z dobrych praktyk i utrzymywanie standardów • Przyjaznośd dla użytkownika
  • 35.
  • 36.
    Porażki Wdrażanie zmian bezzweryfikowanego backupu Porządek w kopiach zapasowych, domenach i serwerach Kopia robocza / testowa dostępna dla wyszukiwarek Pokora względem czasu i umiejętności
  • 37.
    Najczęstsze źródła problemów •<meta name="generator" content="WordPress .old" /> • admin1 • UPDATE wp_users SET user_status = '$ranga' WHERE ID = $id”; • domena.tld/wp-content/uploads/2010/02/
  • 38.
    Brak aktualizacji <channel> <title>Ministerstwo Administracjii Cyfryzacji</title> <atom:link href="http://mac.gov.pl/feed/" rel="self" type="application/rss+xml" /> <link>http://mac.gov.pl</link> <description>Ministerstwo Administracji i Cyfryzacji</description> <lastBuildDate>Tue, 09 Oct 2012 13:19:09 +0000</lastBuildDate> <...> <generator>http://wordpress.org/?v=3.4.1</generator> <item> <channel> <title>Kominek IN</title> <atom:link href="http://www.kominek.in/feed/" rel="self" type="application/rss+xml" /> <link>http://www.kominek.in</link> <description>Lifestyle, Kominek, High life, Uczucia</description> <...> <generator>http://wordpress.org/?v=</generator> <item>
  • 39.
    Słabe hasła idostęp mnemotechnika Taniecz**, KMorgan%40 głUkłÓbaBzakaRmaSdłUhaS5 głupia kłótliwa babo za karę masz długie hasło x (gdzie x = ulubiony date +%w) +cAw4l:p ssh sftp zapisane hasła strona trzasła
  • 40.
    Polityka bezpieczeostwa Jeden wordpressjedna baza danych Każdy prefix do tabel unikalny Standardowe ścieżki do wp-config.php czy użytków jak PhpMyAdmin zmienione Wzbogacone .htaccess Właściwe prawa dostępu do plików i katalogów
  • 41.
    Options All -Indexes Godzinypracy we wrześniu: 16 - 0.30 (coś niecoś poprawiła bo już nie ma widocznych godzin wgrania plików) 16 - 0.30 ale raz jakiś banner wrzucił o 8 rano 11 - 14
  • 42.
    .htaccess ServerSignature Off # ograniczamylimit uploadu do 10mb LimitRequestBody 10240000 # obsługa typowych błędów ErrorDocument 404 /404.php ErrorDocument 403 "<html><head><title>O NO!</title></head><body><br /><br /><h2><tt>403 Chyba coś nie zadzialalo :(</tt></h2></body></html>’’ ErrorDocument 500 /error.php
  • 43.
    Prosto z codex RewriteRule^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+.php$ - [F,L] RewriteRule ^wp- includes/js/tinymce/langs/.+.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L]
  • 44.
    # wycinka komentarzyz kosmosu RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments- post.php* RewriteCond %{HTTP_REFERER} !.*twoja-dom.ena* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L] # wycina metodę TRACE RewriteCond %{REQUEST_METHOD} ^TRAC(E|K) RewriteRule .* - [F]
  • 45.
    # wycinka hotlinkowania RewriteCond%{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www.)?twoja-dom.ena/.*$ [NC] RewriteRule .(gif|jpg|swf|flv|png)$ http://twój.obrazek.jpg [R=302,L] # przekierowanie na subdomenę www RewriteCond %{HTTP_HOST} ^twoja.tld$ [NC] RewriteRule ^(.*)$ http://www.twoja.tld/$1 [R=301,L]
  • 46.
    # blokujemy dostępdo plików <FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> Order Allow,Deny Deny from all </FilesMatch> <files ^wp-config.php$> Order deny,allow deny from all </files>
  • 47.
    # global User-agent: * robots.txt Disallow: /cgi-bin/ Disallow: /wp-admin/ Disallow: /wp-includes/ Disallow: /wp-content/plugins/ Disallow: /wp-content/cache/ Disallow: /wp-content/themes/ Disallow: /trackback/ Disallow: /feed/ Disallow: /comments/ Disallow: /category/*/* Disallow: */trackback/ Disallow: */feed/ Disallow: */comments/ Disallow: /*? Allow: /wp-content/uploads/
  • 49.
  • 50.
    Materiały użyte wprzykładach http://www.zombiesamurai.pl http://wolnelektury.pl http://mac.gov.pl http://www.kominek.in http://blog.kurasinski.com http://hatalska.com http://lukrecjusz.pl