facebookinstagrammailtwitter

verwebbt

WordPress XML-RPC flooding

Dear WordPress-User,

maybe you know about XML-RPC, or at least you know about Trackbacks and Pingbacks, as WordPress calls them. And maybe you noticed that you don’t use them at all.

Sadly XML-RPC has a big flaw: you can get attacked; flooded with POST requests to xmlrpc.php, one request every few milliseconds for a few hours. Your page gets slower until your webserver raises the white flag. You’re being DoS’ed.

Do yourself a favor. Block all access to /xmlrpc.php and be happy again. This will cause trouble with some services like the WordPress Smartphone App, but in my situation it’s worth it. I don’t use the App at all and was being attacked multiple times a day.

Most likely your php is processed by Apache. Add this to your .htaccess file to deny access to XML-RPC.


<Files "xmlrpc.php">
    Order Allow,Deny
    deny from all
</Files>

If your php is processed by nginx, you need to add this to your nginx config:


location = /xmlrpc.php {
    deny all;
    access_log off;
    error_log off;
}

To test this, simply try to request yoursite.com/xmlrpc.php. You should get a 403 Forbidden.

Note from Future-Timo: WordPress‘ Jetpack seems to use xmlrpc.php for communication. Currently I’m trying to just disable pingback using the following snippet in my functions.php – I’m not completely convinced that this will scare off attack-bots.


function remove_xmlrpc_pingback_ping( $methods ) {
    unset( $methods['pingback.ping'] );
    return $methods;
}
add_filter( 'xmlrpc_methods', 'remove_xmlrpc_pingback_ping' );

Note from Future-Future-Timo: as I suspected this will not solve the problem. I went back and deactivated XML-RPC completely.

In der Vollendung meines Plans komplett auf timomeh zu wechseln, besitze ich nun timomeh.de samt neuem Blog. Ich werde dort keine Business-Development-Arikel verfassen sondern auf einer persönlichen Basis bleiben. Wie ich mich kenne möchte ich früher oder später wieder ein bisschen über Development schreiben, deshalb bleibt verwebbt.de weiterhin aktiv.

Wer sich übrigens dafür interessiert, wie das WordPress Theme für timomeh.de in Code aussieht, kann dies auf GitHub sehen. Man sieht ein bisschen gulp-Action, ich habe zum Spaß alle meta-Tags nicht über ein Plugin erstellen lassen und laut PageSpeed Insights die Seite so weit optimiert, wie es mir möglich ist.

Kein Vorsatz

Lasst mich das erklären.

Ich war nie mit mir zufrieden. Zumindest nicht in den letzten drei Jahren. Nicht in der Sichtweise, was ich geleistet habe, sondern viel mehr wer ich bin. Ich wusste nie, wer ich wirklich sein soll, obwohl ich eine Vorstellung davon hatte, wer ich gerne sein möchte.

Wer ich bin ist doch größtenteils das Verhalten gegenüber von anderen Menschen. Ich kann für mich selbst super sein, aber am Schluss nehmen mich andere wahr und fällen ein Urteil über mich. Bin ich nett oder bin ich böse; bin ich offen oder bin ich schüchtern.

Wer war ich, wenn ich nicht wusste, wie ich sein soll?

Ich war so, wie ich zu Menschen, die mir wichtig sind, sein musste. War etwas falsch, dann war ich in meinen Augen der Fehler. Hatte man Streit, dann lag es an mir, mich zu entschuldigen. Ich war nicht ich. Zwar war ich dann zu einigen wenigen ein toller Mensch, aber zu anderen war ich nicht wirklich gut. (Sorry!) Man kann es nie allen gerecht machen. Irgendwo baut man sein Ventil auf und lässt dort den Rest raus. Das ist alles andere als richtig.

Ich biege mich nicht mehr zurecht. Alles Vergangenheit. Wer ich sein möchte weiß ich schon länger. Was sich jetzt verändert ist die Tatsache, dass ich damit glücklich, zufrieden und auch etwas stolz bin, dass ich das sein kann.

Ich mag keine Vorsätze. Diese Jahresgrenze ist absolut idiotisch. Wenn man wirklich etwas ändern möchte, dann kann man damit jederzeit anfangen. Im Oktober 2014 habe ich vom einen auf den anderen Tag meine komplette Ernährung umgestellt. Ich trinke daheim fast ausschließlich Wasser statt Eistee, Club Mate oder andere Limonaden. Ich kaufe mir fast jeden Abend einen Salat und koche mir etwas anständiges.

Das ist kein Vorsatz zu 2015. Es passt einfach perfekt zu Neujahr, weil ich in den letzten Tagen ein paar Situationen erlebt habe, die mich wach gerüttelt haben. In der Nacht zum 31.12. nahm ich mir das vor.

Jetzt sitze ich hier und möchte endlich Mensch sein. Puh.

Reset an application window in OS X

As long as I have a Mac I came across this behaviour. With a bit of luck you can drag the window to another screen and hope for the best. But: there’s a way to reset a window with AppleScript (which I never used before). Open Script Editor and run this:


tell application "System Events" to tell process "FileZilla"
    set position of window 1 to {50, 50}
    set size of window 1 to {500, 500}
end tell

Nothing to explain, the syntax is pretty self-explanatory. Change FileZilla to the name of the application and you’re good to go. One annotation: Telling the application FileZilla (or which Application you want to address) won’t work every time. Because of that it’s better to use System Events to address FileZilla.

Update: The application, in my case FileZilla, needs to be opened. Otherwise it won’t work.

Du hast dich oft gefragt, was mich zerreißt /
Ich wollte nicht, dass du es weißt /
Du warst allein zu Haus‘, hast mich vermisst /
Und dich gefragt, was du noch für mich bist.

socket.io in an express app

Socket.io’s Documentation on how to use it with expressjs is slightly not-so-useful. Most likely you will have some MVCish pattern and your controller is far away from where your app lives. I guess you are using express.Router() (at least you should), making it even more difficult to pass the socket.io instance through some require calls. A solution to this occurred to me in the shower.

For simplifying things I wrote this in one file.

var http = require('http')
  , express = require('express')
  , socketio = require('socket.io');
var app = express()
  , sio = socketio();

/**
 * Middleware
 */
// This attaches the socket.io instance
// to the request object
app.use(function(req, res, next) {
  req.io = sio; next();
});

// More middleware, like the following
app.use(bodyParser.json());
app.use(express.static(path.join(__dirname, './public')));

/**
 * Router
 */
app.get('/', function(req, res) {
  req.io.sockets.emit('hi', { hello: 'world' });
  res.send('Hello World');
});

/**
 * Server creation
 */
var server = http.createServer(app);
server.listen(3000);
sio.listen(server);

Postcards from Pripyat

Forgotten and lost places are fascinating. The mere thought of a city standing there all alone for nearly 30 years, slowly decaying, guarded by a few troops, has a strange fascination.

Together with those great drone shots and Promise Land this video is brilliant.

BUSY: Update operation was locked by another update process.
Having trouble updating Plesk? That sucks. Trying to kill the autoinstaller but it just won’t help?

There’s a psa-installer.lock file in /tmp/ which indicates Plesk a running installer. Be sure no installer is running and then delete this little bugger.