SlideShare ist ein Scribd-Unternehmen logo
1 von 70
Downloaden Sie, um offline zu lesen
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
für den Launch einer
TYPO3-Website
Checkliste
mit vielen nützlichen Tipps & Tricks
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Ist der HTML-Code valide?
https://validator.w3.org/public
nicht nur Startseite prüfen!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Wurde Google Search Console
für die Website eingerichtet?
https://www.google.com/webmasters/tools/public
page.meta.google-site-verification = CODE
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
robots = PAGE
robots {
typeNum = 201
config {
disableAllHeaderCode = 1
additionalHeaders = Content-type:text/plain
}
10 = TEXT
10 {
wrap (
User-Agent: *
Allow: /
Disallow: /fileadmin/Daten/
Disallow: /*?id=*
Sitemap: /?eID=dd_googlesitemap
)
	 }
}
Ist „robots.txt“ vorhanden?
Wird dynamisch mittels TypoScript erzeugt
kein Disallow für CSS und JS
RealURL-Konfiguration
$TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAU
LT']['fileName']['index']['robots.txt']['keyVal
ues']['type'] = 201;
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Kann GoogleBot auf mobile Version
der Website zugreifen?
https://www.google.com/webmasters/tools/mobile-friendly/public
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
TYPO3-Extension
„dd_googlesitemap“
Ist die Google-Sitemap vorhanden?
Eintragen in:
robots.txt
Google Search Console


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Wurde Meta-Tag für Robots auf
„index, follow“ gesetzt?
page.meta.robots = {$meta_robots}
meta_robots = index,follow


über Constants steuern
überprüfbar z.B. mit Chrome Extension „SEO Indexability“
https://chrome.google.com/webstore/detail/seo-indexability/mnkcondlhkdpglcdobgohdilckbcbjaj
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
SEO
Sind Seiten, welche aus Listenelementen
generiert werden, aus SEO-Sicht eindeutig?
Eindeutigkeit gefordert für:
title-Tag
meta-Tag „description“
H1



dürfen nicht gleich sein!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Werden Webfonts asynchron geladen?
Google Fonts: JavaScript
um Seitenladevorgang nicht aufzuhalten
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Wurden große PNGs verkleinert?
https://tinypng.com/public
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Wurden die Performance-Killer beseitigt?
https://gtmetrix.com (PageSpeed, YSlow)
https://developers.google.com/speed/pagespeed/insights/
public
public
nur grobe Probleme lösen!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Werden JavaScript- und CSS-Dateien
komprimiert?
Code in .htaccess einkommentieren
config.compressCss = 1
config.compressJs = 1
page.includeCSS {
bezeichnung = {$templates}css/datei.css
bezeichnung.disableCompression = 1
}
Ausnahme
[BE][compressionLevel] = 5
[FE][compressionLevel] = 5
demnächst vielleicht mehr dazu...
ABER:
noch besser
mit Grunt!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Performance
Werden http-Requests für JavaScript-
und CSS-Dateien reduziert?
config.concatenateCss = 1
config.concatenateJs = 1
config.concatenateJsAndCss = 1


page.includeJS.titel = datei.js
page.includeJS.titel.excludeFromConcatenation = 1
sinnvoller Titel („fancybox“ besser als „file1“ etc.)
Ausnahme
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden die Einträge unter „Berichte“
im TYPO3-Backend geprüft?
gibt Auskunft über problematische
Einstellungen, fehlerhafte Extensions etc.
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Ist der Pfad zu „templates“
über Konstante gesetzt?
Pfad am Entwicklungssystem in constants.ts definieren
Pfad am Live-System im Template-Datensatz überschreiben


templates = fileadmin/pfad/zu/templates/
plugin.tx_myext.styles = {$templates}css/myext.css


etwaige Vorkommen aufspüren:
- SSH: grep -r -i "fileadmin/pfad/zu/templates" .
- Suche im TypoScript Object Browser
- TYPO3-Suche im Backend
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden alle Übersichtsseiten von
der Suche ausgenommen?
über Seiteneigenschaften von der Suche ausschließen:
Listenansichten
Suchformular
Suchresultate
etc.




© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
[SYS][displayErrors] = 2
[SYS][devIPmask] = 'unsere IP-Adresse'
Wurden die Debugging-Settings
angepasst?
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
options.clearCache.all = 1
Kann die Redaktion den Cache löschen?
UserTsConfig:
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden unnötige Eingabefelder
für die Redaktion ausgeblendet?
Steuerung über Access Lists
... nicht über TCEFORM


TCEFORM.table.field.disabled = 1
auch für Admins gesperrt!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden alle Einträge in „Database
Compare“ (Install Tool) behandelt?
wesentlich einfacher, solange
Website noch nicht online ist
zur Sicherheit vorher ein mysqldump
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden die Datei- und Verzeichnis-
berechtigungen angepasst?
Apache-User
ab TYPO3 6.x im Install-Tool überprüfbar


chown -R www-data:www-data pfad
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Ist der Scheduler korrekt eingerichtet?
im Backend überprüfen
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Laufen die Scheduler-Tasks auch
bei Ausführung über cron?
manuelle Ausführung: php.ini
Ausführung via cron: php_cli.ini


unterschiedliche PHP-Konfigurationen
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Werden im TypoScript-Object-Browser
Fehlermeldungen ausgegeben?
existieren alle eingebundenen Dateien?
sind Klammern korrekt gesetzt?


kann Teile von TypoScript deaktivieren
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Ist das TYPO3-Admin-Panel
für Admins aktiviert?
admPanel.enable.preview = 1
admPanel.enable.cache = 1
UserTsConfig:
page.config.admPanel = 1
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Ist das TYPO3-Admin-Panel
für Redakteure aktiviert?
admPanel.enable.preview = 1
UserTsConfig:
page.config.admPanel = 1
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Können Extensions über das Repository
aktualisiert werden?
[SYS][curlUse] = 1
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wird der Suchindex (ke_search)
automatisch erneuert?
Task im Scheduler einrichten
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
config.linkVars = L(0-3)
Sind die Werte der LinkVars eingeschränkt?
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurde das Install-Tool-Passwort geändert?
in KeePass eintragen
in SharePoint eintragen


sicheres Passwort mit KeePass generieren
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
TCEMAIN.permissions {
	 userid = 3
	 groupid = 1
	 ### optional Zugriffsrechte
	 //user = show, editcontent, edit, delete, new
	 //group = show, editcontent, edit, delete, new
}
Wird die Benutzergruppe „Zugriff“ neuen
Seiten automatisch zugewiesen?
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden die Configuration Presets
auf „Live“ umgestellt?
Install Tool ab TYPO3 6.x
[SYS][clearCacheSystem] = 1
manuell aktivieren
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden Extensions aktualisiert?
verringert Sicherheitsprobleme
erleichtert möglicherweise spätere Updates


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurden alle nicht benötigten
Extensions vom Server gelöscht?
verringert Sicherheitsprobleme
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Wurde das Caching aktiviert?
config.no_cache = {$no_cache}
Extbase: non-cacheable actions
(ext_localconf.php)


bereits während der Entwicklung aktivieren!
Tipp: Caching immer aktiv, jedoch
mittels Admin-Panel deaktiviert!
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Backend
Sind die Dateitypen für den Upload
sinnvoll eingeschränkt?
[GFX][imagefile_ext] = 'jpg,jpeg,png,gif'
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Wurde die TYPO3-Version auf
den letzten Stand gebracht?
https://get.typo3.org/public
wget get.typo3.org/7.6 --content-disposition
tar xzvf datei.tar.gz
innerhalb einer Version gibt es keine
Datenbank-Updates, sondern nur bug fixes
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Ist die .htaccess vorhanden?
_.htaccess in .htaccess umbenennen
cp typo3_src/_.htaccess ./.htaccess
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Wird .htaccess von Apache berücksichtigt?
<Directory /var/www/html/pfad/zu/projekt/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
prüfen, ob .htaccess aktiv
„absichtlicher“ Fehler in .htaccess muss Error 500 erzeugen
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Wurde das Error-Log am Server geprüft?
404-Fehler und andere Probleme prüfen
tail -f /var/logs/apache2/error.log | grep 404

vhosts-Konfiguration > sites-enabled
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Sind noch Referenzen auf den
Entwicklungs-Server vorhanden?
grep -r -i "dev.website.com" .
TypoScript-Object-Browser durchsuchen
interne TYPO3-Suche
SSH



© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Server
Wurden Datenbank-Dumps
und Tar-Archive gelöscht?
Transfer-Daten entfernen:
Live-Server
Development-Server


Sicherheit & Speicherplatz
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Werden Benutzereingaben gegen
Cross-Site-Scripting abgesichert?
GeneralUtility::removeXSS($string)
Eingabefelder mit JavaScript-Code testen:
<script>alert(document.cookie)</script>
Eingabewerte behandeln:
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist das Favicon vorhanden?
page.shortcutIcon = favicon.ico
Transparenz erhalten
favicon.ico in root-Verzeichnis platzieren


falls nur eine Website in TYPO3-Instanz
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist das Stylesheet für die
Druckansicht vorhanden?
Chrome > Entwicklertools > Console > Rendering Settings
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurden etwaige Test-E-Mail-Adressen
ausgetauscht?
Powermail
eigene Extensions


Konfiguration zentral über Constants
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurden mehrfach eingefügte
JavaScript-Bibliotheken entfernt?
z. B. Powermail (jQuery)
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurde die Extension „sourceopt“
installiert und konfiguriert?
page.config.sourceopt.enabled = 1
page.config.sourceopt.formatHtml = 1
nicht komprimieren:
robots.txt
Newsletter


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurde die parsetime-Ausgabe deaktiviert?
config.debug = 0
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist die 404-Seite definiert?
[FE][pageNotFound_handling] = 'seite-nicht-gefunden'
keine ID angeben, sondern RealURL-Pfad
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurde eine Datei für Wartungsarbeiten
angelegt?
HTML-Datei: „Derzeit werden Wartungsarbeiten durchgeführt...“
[FE][pageUnavailable_handling] = 'unavailable.html'
[FE][pageUnavailable_force] = 1
Kontaktinformationen inkludieren
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist RealURL aktiviert?
config.tx_realurl_enable = 1
diverse Anpassungen nach serialisiertem Code platzieren
serialisierte Konfiguration schneller
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Sind unwichtige Verweisseiten aus dem
RealURL-Pfad ausgeschlossen?
z.B. „/main-nav/“
mittels „dd_googlesitemap“ leicht überprüfbar
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurden die Links überprüft?
https://validator.w3.org/checklink
http://home.snafu.de/tilman/xenulink.html
public
public
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wurde die Website mit einem
Accessibility-Checker überprüft?
http://achecker.ca/checker/
http://wave.webaim.org/
public
public
grobe Probleme behandeln
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Wird der Cache bei Änderung von
Listenelementen automatisch gelöscht?
TCEMAIN.clearCacheCmd = 1,20,126
TCEMAIN.clearCacheCmd = all


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist der Page-Browser für Listenansichten
eingerichtet?
Konfiguration
Styling


sind genug Testdatensätze vorhanden?
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Können einzelne Extensions im
Frontend deaktiviert werden?
Steuerung über Constants
Ausnahme über [SYS][devIPMask]
Bootstrap-Alert o. Ä. einblenden



© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist der Zeilenabstand für Überschriften
sinnvoll gesetzt?
kann bei zu kurzen Überschriften am
Testsystem übersehen werden
global setzen: body { line-height: 1.3 }
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Werden im Entwicklertool des
Browsers Fehler angezeigt?
fehlende Bilder
fehlende CSS-Dateien
JavaScript-Fehler
http-Requests in https-Umgebung




© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist die Lightbox HTML5-konform?
rel-Attribut nicht valide in HTML5
die meisten Lightbox-Varianten können über data-Attribute
gesteuert werden

© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Frontend
Ist die Scrollbar eingeblendet,
damit die Seite nicht „hüpft“?
body { overflow-y: scroll }
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurden Inline-Styles ins externe
Stylesheet übertragen?
HTML-Code sollte keine Inline-Styles enthalten
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wird Extension-JavaScript global
oder lokal eingebunden?
Extension auf (fast) allen Seiten: Ressourcen global einbinden
page.10.includeFooterJS.banner = typo3conf/ext/pfad/zu/banner.js

über Constants steuern, ob lokal oder global
Extension nur auf einzelnen Seiten:
Ressourcen in Extension lokal über
PageRenderer einbinden

© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurden die „to do“-Kommentare
behandelt?
https://www.jetbrains.com/help/phpstorm/10.0/todo-tool-
window.html
https://www.jetbrains.com/help/phpstorm/10.0/defining-todo-
patterns-and-filters.html
public
public
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Entspricht der PHP-Code der
Spezifikation „PSR-2“?
http://blog.jetbrains.com/webide/2012/11/more-php-formatting-
options-and-bundled-code-styles-for-ps/
public
Ctrl + Alt + L
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurde der Code ins SVN-Repository
eingecheckt?
nicht zu viel committen!
ignore list (*.log, baseurl.ts,...)
© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurden die Einträge im Deprecation-Log
überprüft?
Einträge eigener Extensions behandeln
Einträge fremder Extensions behandeln, damit
Deprecation-Log nicht zugemüllt wird


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
Code
Wurden alle devLog-Aufrufe entfernt?
grep -r -i "::devLog" .
nicht benötigte devLog-Aufrufe entfernen
über Constants steuerbar machen


© 2016 Stefan Franke – http://de.slideshare.net/StefanFranke
https://www.youtube.com/watch?v=1PCX5uqBfFY
Natürlich nicht! :-)
Datenbank-Tuning
Grunt/Gulp
Bower
SVN-Export-System
SVG statt PNG
...







Weitere ähnliche Inhalte

Ähnlich wie TYPO3-Checkliste

Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017
Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017
Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017TRILOS new media
 
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)NETWAYS
 
WordPress absichern - WP Camp 2012 in Berlin
WordPress absichern - WP Camp 2012 in BerlinWordPress absichern - WP Camp 2012 in Berlin
WordPress absichern - WP Camp 2012 in BerlinTorsten Landsiedel
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEARCH ONE
 
Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)
Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)
Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)NETWAYS
 
Webentwicklung für das IPhone
Webentwicklung für das IPhoneWebentwicklung für das IPhone
Webentwicklung für das IPhonereinhardh
 
WordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenWordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenTorsten Landsiedel
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Teambrandts
 
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Michael Kirst-Neshva
 
Web-Automatisierung mit WWW::Mechanize
Web-Automatisierung mit WWW::MechanizeWeb-Automatisierung mit WWW::Mechanize
Web-Automatisierung mit WWW::MechanizeThomas Fahle
 
SharePoint 8 Tipps um besser zu Finden
SharePoint 8 Tipps um besser zu FindenSharePoint 8 Tipps um besser zu Finden
SharePoint 8 Tipps um besser zu FindenDavid Schneider
 
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleunigermagnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleunigerThomas Kratz
 
SharePoint Cloud Hybrid Search Pitfalls
SharePoint Cloud Hybrid Search PitfallsSharePoint Cloud Hybrid Search Pitfalls
SharePoint Cloud Hybrid Search PitfallsKai Boschung
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Software
 
Sendung 17 09 Special: Stream
Sendung 17 09 Special: StreamSendung 17 09 Special: Stream
Sendung 17 09 Special: StreamThomas Maier
 
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)NETWAYS
 
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)NETWAYS
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3marco-huber
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions
 
HTTPs Migration How To - SMX München 2017
HTTPs Migration How To - SMX München 2017HTTPs Migration How To - SMX München 2017
HTTPs Migration How To - SMX München 2017Bastian Grimm
 

Ähnlich wie TYPO3-Checkliste (20)

Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017
Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017
Vortrag WordPress absichern beim Webmontag Hannover am 16.01.2017
 
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
Logstash: Windows und Linux Logmanagement (Webinar vom 07.11.2014)
 
WordPress absichern - WP Camp 2012 in Berlin
WordPress absichern - WP Camp 2012 in BerlinWordPress absichern - WP Camp 2012 in Berlin
WordPress absichern - WP Camp 2012 in Berlin
 
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-FreaksSEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
SEO Day 2016: Perfekte Ladezeiten und SEO-Hosting für Speed-Freaks
 
Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)
Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)
Icinga 2: Integration von Graphite (Webinar vom 25.09.2014)
 
Webentwicklung für das IPhone
Webentwicklung für das IPhoneWebentwicklung für das IPhone
Webentwicklung für das IPhone
 
WordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisierenWordPress.com-Blogs individualisieren
WordPress.com-Blogs individualisieren
 
Software Entwicklung im Team
Software Entwicklung im TeamSoftware Entwicklung im Team
Software Entwicklung im Team
 
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
Datensicherheit in der Cloud und ausserhalb - SharePoint Konferenz Wien 2013
 
Web-Automatisierung mit WWW::Mechanize
Web-Automatisierung mit WWW::MechanizeWeb-Automatisierung mit WWW::Mechanize
Web-Automatisierung mit WWW::Mechanize
 
SharePoint 8 Tipps um besser zu Finden
SharePoint 8 Tipps um besser zu FindenSharePoint 8 Tipps um besser zu Finden
SharePoint 8 Tipps um besser zu Finden
 
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleunigermagnolia mit thymeleaf - ein agiler prozess-beschleuniger
magnolia mit thymeleaf - ein agiler prozess-beschleuniger
 
SharePoint Cloud Hybrid Search Pitfalls
SharePoint Cloud Hybrid Search PitfallsSharePoint Cloud Hybrid Search Pitfalls
SharePoint Cloud Hybrid Search Pitfalls
 
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit AlfrescoAlfresco Day Vienna 2016: Entwickeln mit Alfresco
Alfresco Day Vienna 2016: Entwickeln mit Alfresco
 
Sendung 17 09 Special: Stream
Sendung 17 09 Special: StreamSendung 17 09 Special: Stream
Sendung 17 09 Special: Stream
 
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
Icinga 2: Enterprise Monitoring der nächsten Generation (Webinar vom 22.07.2014)
 
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
Webinar Icinga 2: Enterprise Monitoring der nächsten Generation (22.07.2014)
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3
 
elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09elemente websolutions - Zusammenfassung T3DD09
elemente websolutions - Zusammenfassung T3DD09
 
HTTPs Migration How To - SMX München 2017
HTTPs Migration How To - SMX München 2017HTTPs Migration How To - SMX München 2017
HTTPs Migration How To - SMX München 2017
 

TYPO3-Checkliste

  • 1. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke für den Launch einer TYPO3-Website Checkliste mit vielen nützlichen Tipps & Tricks
  • 2. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke SEO Ist der HTML-Code valide? https://validator.w3.org/public nicht nur Startseite prüfen!
  • 3. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke SEO Wurde Google Search Console für die Website eingerichtet? https://www.google.com/webmasters/tools/public page.meta.google-site-verification = CODE
  • 4. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke SEO robots = PAGE robots { typeNum = 201 config { disableAllHeaderCode = 1 additionalHeaders = Content-type:text/plain } 10 = TEXT 10 { wrap ( User-Agent: * Allow: / Disallow: /fileadmin/Daten/ Disallow: /*?id=* Sitemap: /?eID=dd_googlesitemap ) } } Ist „robots.txt“ vorhanden? Wird dynamisch mittels TypoScript erzeugt kein Disallow für CSS und JS RealURL-Konfiguration $TYPO3_CONF_VARS['EXTCONF']['realurl']['_DEFAU LT']['fileName']['index']['robots.txt']['keyVal ues']['type'] = 201;
  • 5. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke SEO Kann GoogleBot auf mobile Version der Website zugreifen? https://www.google.com/webmasters/tools/mobile-friendly/public
  • 6. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke SEO TYPO3-Extension „dd_googlesitemap“ Ist die Google-Sitemap vorhanden? Eintragen in: robots.txt Google Search Console  
  • 7. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke SEO Wurde Meta-Tag für Robots auf „index, follow“ gesetzt? page.meta.robots = {$meta_robots} meta_robots = index,follow   über Constants steuern überprüfbar z.B. mit Chrome Extension „SEO Indexability“ https://chrome.google.com/webstore/detail/seo-indexability/mnkcondlhkdpglcdobgohdilckbcbjaj
  • 8. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke SEO Sind Seiten, welche aus Listenelementen generiert werden, aus SEO-Sicht eindeutig? Eindeutigkeit gefordert für: title-Tag meta-Tag „description“ H1    dürfen nicht gleich sein!
  • 9. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Performance Werden Webfonts asynchron geladen? Google Fonts: JavaScript um Seitenladevorgang nicht aufzuhalten
  • 10. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Performance Wurden große PNGs verkleinert? https://tinypng.com/public
  • 11. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Performance Wurden die Performance-Killer beseitigt? https://gtmetrix.com (PageSpeed, YSlow) https://developers.google.com/speed/pagespeed/insights/ public public nur grobe Probleme lösen!
  • 12. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Performance Werden JavaScript- und CSS-Dateien komprimiert? Code in .htaccess einkommentieren config.compressCss = 1 config.compressJs = 1 page.includeCSS { bezeichnung = {$templates}css/datei.css bezeichnung.disableCompression = 1 } Ausnahme [BE][compressionLevel] = 5 [FE][compressionLevel] = 5 demnächst vielleicht mehr dazu... ABER: noch besser mit Grunt!
  • 13. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Performance Werden http-Requests für JavaScript- und CSS-Dateien reduziert? config.concatenateCss = 1 config.concatenateJs = 1 config.concatenateJsAndCss = 1   page.includeJS.titel = datei.js page.includeJS.titel.excludeFromConcatenation = 1 sinnvoller Titel („fancybox“ besser als „file1“ etc.) Ausnahme
  • 14. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurden die Einträge unter „Berichte“ im TYPO3-Backend geprüft? gibt Auskunft über problematische Einstellungen, fehlerhafte Extensions etc.
  • 15. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Ist der Pfad zu „templates“ über Konstante gesetzt? Pfad am Entwicklungssystem in constants.ts definieren Pfad am Live-System im Template-Datensatz überschreiben   templates = fileadmin/pfad/zu/templates/ plugin.tx_myext.styles = {$templates}css/myext.css   etwaige Vorkommen aufspüren: - SSH: grep -r -i "fileadmin/pfad/zu/templates" . - Suche im TypoScript Object Browser - TYPO3-Suche im Backend
  • 16. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurden alle Übersichtsseiten von der Suche ausgenommen? über Seiteneigenschaften von der Suche ausschließen: Listenansichten Suchformular Suchresultate etc.    
  • 17. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend [SYS][displayErrors] = 2 [SYS][devIPmask] = 'unsere IP-Adresse' Wurden die Debugging-Settings angepasst?
  • 18. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend options.clearCache.all = 1 Kann die Redaktion den Cache löschen? UserTsConfig:
  • 19. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurden unnötige Eingabefelder für die Redaktion ausgeblendet? Steuerung über Access Lists ... nicht über TCEFORM   TCEFORM.table.field.disabled = 1 auch für Admins gesperrt!
  • 20. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurden alle Einträge in „Database Compare“ (Install Tool) behandelt? wesentlich einfacher, solange Website noch nicht online ist zur Sicherheit vorher ein mysqldump
  • 21. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurden die Datei- und Verzeichnis- berechtigungen angepasst? Apache-User ab TYPO3 6.x im Install-Tool überprüfbar   chown -R www-data:www-data pfad
  • 22. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Ist der Scheduler korrekt eingerichtet? im Backend überprüfen
  • 23. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Laufen die Scheduler-Tasks auch bei Ausführung über cron? manuelle Ausführung: php.ini Ausführung via cron: php_cli.ini   unterschiedliche PHP-Konfigurationen
  • 24. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Werden im TypoScript-Object-Browser Fehlermeldungen ausgegeben? existieren alle eingebundenen Dateien? sind Klammern korrekt gesetzt?   kann Teile von TypoScript deaktivieren
  • 25. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Ist das TYPO3-Admin-Panel für Admins aktiviert? admPanel.enable.preview = 1 admPanel.enable.cache = 1 UserTsConfig: page.config.admPanel = 1
  • 26. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Ist das TYPO3-Admin-Panel für Redakteure aktiviert? admPanel.enable.preview = 1 UserTsConfig: page.config.admPanel = 1
  • 27. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Können Extensions über das Repository aktualisiert werden? [SYS][curlUse] = 1
  • 28. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wird der Suchindex (ke_search) automatisch erneuert? Task im Scheduler einrichten
  • 29. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend config.linkVars = L(0-3) Sind die Werte der LinkVars eingeschränkt?
  • 30. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurde das Install-Tool-Passwort geändert? in KeePass eintragen in SharePoint eintragen   sicheres Passwort mit KeePass generieren
  • 31. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend TCEMAIN.permissions { userid = 3 groupid = 1 ### optional Zugriffsrechte //user = show, editcontent, edit, delete, new //group = show, editcontent, edit, delete, new } Wird die Benutzergruppe „Zugriff“ neuen Seiten automatisch zugewiesen?
  • 32. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurden die Configuration Presets auf „Live“ umgestellt? Install Tool ab TYPO3 6.x [SYS][clearCacheSystem] = 1 manuell aktivieren
  • 33. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurden Extensions aktualisiert? verringert Sicherheitsprobleme erleichtert möglicherweise spätere Updates  
  • 34. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurden alle nicht benötigten Extensions vom Server gelöscht? verringert Sicherheitsprobleme
  • 35. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Wurde das Caching aktiviert? config.no_cache = {$no_cache} Extbase: non-cacheable actions (ext_localconf.php)   bereits während der Entwicklung aktivieren! Tipp: Caching immer aktiv, jedoch mittels Admin-Panel deaktiviert!
  • 36. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Backend Sind die Dateitypen für den Upload sinnvoll eingeschränkt? [GFX][imagefile_ext] = 'jpg,jpeg,png,gif'
  • 37. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Server Wurde die TYPO3-Version auf den letzten Stand gebracht? https://get.typo3.org/public wget get.typo3.org/7.6 --content-disposition tar xzvf datei.tar.gz innerhalb einer Version gibt es keine Datenbank-Updates, sondern nur bug fixes
  • 38. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Server Ist die .htaccess vorhanden? _.htaccess in .htaccess umbenennen cp typo3_src/_.htaccess ./.htaccess
  • 39. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Server Wird .htaccess von Apache berücksichtigt? <Directory /var/www/html/pfad/zu/projekt/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> prüfen, ob .htaccess aktiv „absichtlicher“ Fehler in .htaccess muss Error 500 erzeugen
  • 40. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Server Wurde das Error-Log am Server geprüft? 404-Fehler und andere Probleme prüfen tail -f /var/logs/apache2/error.log | grep 404  vhosts-Konfiguration > sites-enabled
  • 41. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Server Sind noch Referenzen auf den Entwicklungs-Server vorhanden? grep -r -i "dev.website.com" . TypoScript-Object-Browser durchsuchen interne TYPO3-Suche SSH   
  • 42. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Server Wurden Datenbank-Dumps und Tar-Archive gelöscht? Transfer-Daten entfernen: Live-Server Development-Server   Sicherheit & Speicherplatz
  • 43. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Werden Benutzereingaben gegen Cross-Site-Scripting abgesichert? GeneralUtility::removeXSS($string) Eingabefelder mit JavaScript-Code testen: <script>alert(document.cookie)</script> Eingabewerte behandeln:
  • 44. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Ist das Favicon vorhanden? page.shortcutIcon = favicon.ico Transparenz erhalten favicon.ico in root-Verzeichnis platzieren   falls nur eine Website in TYPO3-Instanz
  • 45. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Ist das Stylesheet für die Druckansicht vorhanden? Chrome > Entwicklertools > Console > Rendering Settings
  • 46. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Wurden etwaige Test-E-Mail-Adressen ausgetauscht? Powermail eigene Extensions   Konfiguration zentral über Constants
  • 47. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Wurden mehrfach eingefügte JavaScript-Bibliotheken entfernt? z. B. Powermail (jQuery)
  • 48. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Wurde die Extension „sourceopt“ installiert und konfiguriert? page.config.sourceopt.enabled = 1 page.config.sourceopt.formatHtml = 1 nicht komprimieren: robots.txt Newsletter  
  • 49. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Wurde die parsetime-Ausgabe deaktiviert? config.debug = 0
  • 50. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Ist die 404-Seite definiert? [FE][pageNotFound_handling] = 'seite-nicht-gefunden' keine ID angeben, sondern RealURL-Pfad
  • 51. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Wurde eine Datei für Wartungsarbeiten angelegt? HTML-Datei: „Derzeit werden Wartungsarbeiten durchgeführt...“ [FE][pageUnavailable_handling] = 'unavailable.html' [FE][pageUnavailable_force] = 1 Kontaktinformationen inkludieren
  • 52. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Ist RealURL aktiviert? config.tx_realurl_enable = 1 diverse Anpassungen nach serialisiertem Code platzieren serialisierte Konfiguration schneller
  • 53. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Sind unwichtige Verweisseiten aus dem RealURL-Pfad ausgeschlossen? z.B. „/main-nav/“ mittels „dd_googlesitemap“ leicht überprüfbar
  • 54. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Wurden die Links überprüft? https://validator.w3.org/checklink http://home.snafu.de/tilman/xenulink.html public public
  • 55. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Wurde die Website mit einem Accessibility-Checker überprüft? http://achecker.ca/checker/ http://wave.webaim.org/ public public grobe Probleme behandeln
  • 56. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Wird der Cache bei Änderung von Listenelementen automatisch gelöscht? TCEMAIN.clearCacheCmd = 1,20,126 TCEMAIN.clearCacheCmd = all  
  • 57. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Ist der Page-Browser für Listenansichten eingerichtet? Konfiguration Styling   sind genug Testdatensätze vorhanden?
  • 58. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Können einzelne Extensions im Frontend deaktiviert werden? Steuerung über Constants Ausnahme über [SYS][devIPMask] Bootstrap-Alert o. Ä. einblenden   
  • 59. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Ist der Zeilenabstand für Überschriften sinnvoll gesetzt? kann bei zu kurzen Überschriften am Testsystem übersehen werden global setzen: body { line-height: 1.3 }
  • 60. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Werden im Entwicklertool des Browsers Fehler angezeigt? fehlende Bilder fehlende CSS-Dateien JavaScript-Fehler http-Requests in https-Umgebung    
  • 61. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Ist die Lightbox HTML5-konform? rel-Attribut nicht valide in HTML5 die meisten Lightbox-Varianten können über data-Attribute gesteuert werden 
  • 62. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Frontend Ist die Scrollbar eingeblendet, damit die Seite nicht „hüpft“? body { overflow-y: scroll }
  • 63. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Code Wurden Inline-Styles ins externe Stylesheet übertragen? HTML-Code sollte keine Inline-Styles enthalten
  • 64. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Code Wird Extension-JavaScript global oder lokal eingebunden? Extension auf (fast) allen Seiten: Ressourcen global einbinden page.10.includeFooterJS.banner = typo3conf/ext/pfad/zu/banner.js  über Constants steuern, ob lokal oder global Extension nur auf einzelnen Seiten: Ressourcen in Extension lokal über PageRenderer einbinden 
  • 65. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Code Wurden die „to do“-Kommentare behandelt? https://www.jetbrains.com/help/phpstorm/10.0/todo-tool- window.html https://www.jetbrains.com/help/phpstorm/10.0/defining-todo- patterns-and-filters.html public public
  • 66. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Code Entspricht der PHP-Code der Spezifikation „PSR-2“? http://blog.jetbrains.com/webide/2012/11/more-php-formatting- options-and-bundled-code-styles-for-ps/ public Ctrl + Alt + L
  • 67. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Code Wurde der Code ins SVN-Repository eingecheckt? nicht zu viel committen! ignore list (*.log, baseurl.ts,...)
  • 68. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Code Wurden die Einträge im Deprecation-Log überprüft? Einträge eigener Extensions behandeln Einträge fremder Extensions behandeln, damit Deprecation-Log nicht zugemüllt wird  
  • 69. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke Code Wurden alle devLog-Aufrufe entfernt? grep -r -i "::devLog" . nicht benötigte devLog-Aufrufe entfernen über Constants steuerbar machen  
  • 70. © 2016 Stefan Franke – http://de.slideshare.net/StefanFranke https://www.youtube.com/watch?v=1PCX5uqBfFY Natürlich nicht! :-) Datenbank-Tuning Grunt/Gulp Bower SVN-Export-System SVG statt PNG ...      