There’s been a lot of discussion around John O’Nolan’s Ghost today. And there should be. It’s a beautiful, blog focused reimagining of the WordPress dashboard that provides an alternative to what they’ve done with the dashboard on WordPress.com.
A lot of the discussion is about how John would like to do this as a fork of WordPress. And while I think his efforts and ideas might help the WordPress UI Team more than a fork would, I’m really hoping that someone picks up and runs with his editor idea.
Maybe that’s influenced by the fact that I’ve been working in Markdown more and more lately. Still I really like the idea of a quick, split paned writing area with a live preview.
While JSDetox is great for ripping through JavaScript malware, it doesn’t really handle obfuscated PHP. Fortunately, the gang at Sucuri has set up DDecode to process (and act as a sort of a pastebin for) those nasty little bits of PHP code.
I’ve been looking for a clean, single-column, responsive WordPress theme that supports post formats (or at least asides) for the past few weeks now. And honestly, I was beginning to think I’d have to roll my own. Now, that isn’t really an issue — especially since I’m comfortable with theming — but site design is something that I don’t currently have the bandwidth for.
Then, I saw Jake Caputo’s Memoir. And even though it’s a ThemeForest theme, Jake’s track record (and the demo) immediately made it into a solid candidate. Especially when the other two options involve adding asides to either Anthem or Duet.
I’ve known the story of the cover artwork for Joy Division’s Unknown Pleasures for quite some time now, but it’s always a pleasure to be able to hear Peter Saville talk about it. [via]
While I do get to work on WordPress Multisite issues from time to time, I apparently don’t do it often enough to know about the NOBLOGREDIRECT constant…
Basically, that tells your Multisite install to redirect to an alternate URL of your choosing if either:
Registration is disabled.
There’s no install that corresponds to the domain being visited.
Not too long ago, I helped a friend clear out some malware on their WordPress site. In doing so, we went thru a pretty comprehensive site cleanup checklist:
Deleted unused plugins & themes.
Installed a fresh copy of everything.
WordPress core
Plugins
Themes
Double checked the .htaccess file.
Changed every conceivable password.
WordPress admin users
FTP/SFTP/SSH account
MySQL user
Bought a SSL certificate and forced all wp-admin & wp-login.php traffic to it.
But the malware would keep getting reinserted in the site. Almost like clockwork. So I had them install a logging plugin to see if we could catch what was happening. Sure enough, the lone admin account would log in, upload & activate a plugin — which seems to be how the attacker was delivering their payload — and then remove the plugin from the site before logging out. Running a “stat” (via the shell) on the files we’d cleaned previously all showed that the modify timestamp matched up (roughly) with the plugin activation timestamp.
Because this kept happening, there were some concerns that my friend’s personal Gmail account might be hacked. They enabled 2-step verification as a response and started watching the account activity like a hawk.
Then the malware came back. Again. But nobody had logged in to my friend’s Gmail account. Things were getting to be maddening.
Since we couldn’t spot anyone logging into their email account, I started going over their Apache logs. That’s when I found something interesting…
If you look at things closely, you’ll see that the key value is the same both times. And, upon checking their database, I noticed the key value was still set to HR9qFJ2N6c3XveQY487b. Since WordPress clears out the user_activation_key value from the database after it has been used, the faux plugin the attacker was using must’ve pushed that value back into place to provide them with a backdoor. Pretty sneaky.
So I cleared the malware, locked the site down again and made sure to clear out the user_activation_key. Sure enough, the malware stopped coming back and my friend was happy that they could finally concentrate on blogging again.
Anyhow, ever since then, this little MySQL query has been getting run on every hacked site I’ve worked on…
Yeah, that totally guts all of the user_activation_key values for admin and non-admin users alike — and I’m sure that most attackers aren’t as clever as the one I was dealing with — but it’s always better to be safe than sorry, right?
I’m really happy that Venus Patrol tipped me off to Gauge[iOS]. Ever since I grabbed it a few days ago, I’ve been playing it kind of a lot. So much so that Super Hexagon is sitting there, getting all jealous.
What can I say? I’m into the quirky humor, love the distractions that try to thwart your progress and the price (free) is definitely right.
I wish the boring, stucco covered Starbucks they just opened in our neighborhood looked half as nice as this experimental LEED-certified one in Denver. C’est la vie, right?
Sentry is a realtime event logging and aggregation platform. It specializes in monitoring errors and extracting all the information needed to do a proper post-mortem without any of the hassle of the standard user feedback loop.
I saw this and thought “Oh, that’s pretty handy.”
Then I noticed that someone had thrown together a WordPress plugin…
So, guess what just got promoted to the top of my “fuck with later” pile?