{"id":3636,"date":"2026-10-20T12:35:52","date_gmt":"2026-10-20T07:35:52","guid":{"rendered":"https:\/\/islamabad.wordcamp.org\/2026\/?post_type=wcb_session&#038;p=3636"},"modified":"2026-10-20T12:35:52","modified_gmt":"2026-10-20T07:35:52","slug":"wordpress-security-hardening-using-claude-code","status":"publish","type":"wcb_session","link":"https:\/\/islamabad.wordcamp.org\/2026\/session\/wordpress-security-hardening-using-claude-code\/","title":{"rendered":"WordPress security hardening using claude code"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Most WordPress security work begins after something has already gone wrong: a spike in failed logins, an unfamiliar admin account, a file that shouldn&#8217;t be there. The evidence is usually sitting in server and access logs, but few site owners have the time or skills to read through it.<\/p>\n\n\n<p class=\"wp-block-paragraph\">In this talk I show how an AI coding agent, Claude Code, can do much of that investigation and repair when it is given controlled access to the real environment: WordPress and server logs, SFTP and SSH to the host, and the Cloudflare account in front of the site. Working from real incidents on sites I manage, I walk through the full loop:<\/p>\n\n\n<p class=\"wp-block-paragraph\">Diagnose \u2014 the agent reads access, error and authentication logs, correlates them, and spots brute-force attempts, vulnerability scanning, suspicious requests and compromised files.<br \/>\nTrace the attack vector \u2014 it identifies how attackers are getting in, whether through an outdated plugin, an exposed XML-RPC endpoint, weak credentials or a misconfigured file permission.<br \/>\nFix \u2014 it hardens the site by installing and configuring established security plugins, adjusting server and Cloudflare firewall rules, or writing a small custom plugin when no existing one fits the requirement.<br \/>\nPrevent \u2014 it turns what was found into lasting defences, such as rate limits, WAF rules, login protection and monitoring.<\/p>\n\n\n<p class=\"wp-block-paragraph\">The talk is equally honest about the risks. Handing an AI agent SSH and production access is powerful and dangerous. I will share the guardrails I use, including least-privilege accounts, working on staging first, reviewing every change before it goes live, and keeping backups. I&#8217;ll also show real cases where the agent was confidently wrong, and how to verify its work instead of trusting it. Attendees leave with a practical, safe workflow they can apply to their own sites.<\/p>\n\n\n<div class=\"wp-block-wordcamp-session-speakers\"><span class=\"wp-block-wordcamp-session-speakers__byline\">Presented by<\/span><span class=\"wp-block-wordcamp-session-speakers__name\"><a href=\"https:\/\/islamabad.wordcamp.org\/2026\/speaker\/muhammad-murad-khan\/\">Muhammad Murad Khan<\/a><\/span><\/div>","protected":false},"excerpt":{"rendered":"<p>Most WordPress security work begins after something has already gone wrong: a spike in failed logins, an unfamiliar admin account, a file that shouldn&#8217;t be there. The evidence is usually sitting in server and access logs, but few site owners have the time or skills to read through it. In this talk I show how [&hellip;]<\/p>\n","protected":false},"author":126974,"featured_media":0,"template":"","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_wcpt_session_time":0,"_wcpt_session_duration":3000,"_wcpt_session_type":"","_wcpt_speaker_id":[3635],"footnotes":""},"session_track":[],"session_category":[],"class_list":["post-3636","wcb_session","type-wcb_session","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/phj35E-WE","session_date_time":{"date":"","time":""},"session_speakers":[{"id":"3635","slug":"muhammad-murad-khan","name":"Muhammad Murad Khan","link":"https:\/\/islamabad.wordcamp.org\/2026\/speaker\/muhammad-murad-khan\/"}],"session_cats_rendered":null,"_links":{"self":[{"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/3636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions"}],"about":[{"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/types\/wcb_session"}],"version-history":[{"count":1,"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/3636\/revisions"}],"predecessor-version":[{"id":4307,"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/sessions\/3636\/revisions\/4307"}],"speakers":[{"embeddable":true,"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/speakers\/3635"}],"author":[{"embeddable":true,"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wporg\/v1\/users\/mehnazsr"}],"wp:attachment":[{"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/media?parent=3636"}],"wp:term":[{"taxonomy":"wcb_track","embeddable":true,"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/session_track?post=3636"},{"taxonomy":"wcb_session_category","embeddable":true,"href":"https:\/\/islamabad.wordcamp.org\/2026\/wp-json\/wp\/v2\/session_category?post=3636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}