I built an open-source scanner and pointed it at small U.S. government websites. The same five security mistakes kept showing up: weak HTTPS, no CSP, leaky testI built an open-source scanner and pointed it at small U.S. government websites. The same five security mistakes kept showing up: weak HTTPS, no CSP, leaky test

What I Learned from Scanning Dozens of Small Government Websites (and Why the Same Bugs Keep Coming)

Legacy CMSes, tiny IT teams, and the same five security mistakes on repeat.

Most of the security work I do is not glamorous.

There are no red team hoodies, no zero-days, no dramatic “we hacked the mainframe” moments. Instead, there’s a lot of curl, headers, and very old PHP.

I’m based in Chicago and I’ve been building web apps for 15+ years. At some point last year, I decided to scratch an itch: I wanted a small open-source tool that would quickly tell me how “healthy” a public website is, security‑wise. Nothing fancy – just:

  • does HTTPS really work?
  • are the obvious leaks closed?
  • are we doing anything about scripts from half the internet?

Naturally, I pointed this tool at the kinds of domains most people forget about: small-town websites, school districts and county portals in the U.S. The stuff that runs on old CMS installs and “if the page loads, it’s probably fine” energy.

On one of the first school district sites I checked, I found a phpinfo.php page still sitting on a test subdomain that was never cleaned up. The homepage looked perfectly normal. Under the hood, it was basically a live x‑ray of the entire stack.

After a few dozen scans like that, a pattern emerged. Different vendors, different hosting, different logos… but almost exactly the same mistakes.

This post is not about the tool. It’s about those recurring mistakes and what they say about how we build (and maintain) public‑facing sites.

\

Pattern #1: HTTPS is there, but not really trusted

Almost every site I tested redirected to HTTPS. That’s a huge improvement compared to a decade ago.

But in a surprising number of cases, there was no HSTS at all.

From the browser’s point of view, that first visit is still “HTTP is allowed.” An on‑path attacker sitting on the same Wi‑Fi can quietly downgrade it, inject whatever they want, and then forward the request to the real site. The user sees a familiar URL and a working page. Nothing screams “you’re being messed with.”

The fix is literally one header:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Yet it’s missing on many sites simply because nobody ever picked it up as a requirement. The vendor shipped “it works on HTTPS,” the client said “great, thanks,” and that was the end of the story.

\

Pattern #2: No CSP on pages full of third‑party scripts

Most of the sites I looked at have had multiple lives.

Different contractors added:

  • analytics
  • chat widgets
  • form providers
  • random “we need this by Friday” embeds

A few years later, it’s a soup of inline scripts and external JS that nobody really owns.

Without a Content Security Policy (CSP), the browser will happily execute whatever responses come back from those third‑party domains. If one of them gets compromised, injected code runs on a government domain, in a context where users are used to trusting what they see.

I get why CSP is often missing. It looks scary, and the first attempt tends to break something. But even a simple starter policy like this:

Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://www.googletagmanager.com https://www.google-analytics.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-ancestors 'none';

already cuts down the blast radius a lot.

The problem isn’t the lack of silver‑bullet tech. It’s that no one ever said, “This site must have a CSP,” so it just never happened.

\

Pattern #3: Leaky files and forgotten test stuff

This one still makes me pause every time I see it.

From the scans, I kept running into things like:

  • .env files with database credentials
  • .git/ directories exposing repo history
  • phpinfo.php on “temporary” subdomains
  • backup archives sitting in the web root
  • random /old/, /test/ or /backup/ directories that were meant to be removed “later”

Attackers don’t need to be creative here. They just need a script that walks common paths.

And again, the fixes are boring:

  • block access to known‑sensitive patterns at the web server or WAF
  • add “no test artifacts / backups in web root” to your deployment checklist
  • schedule a periodic scan specifically looking for these paths

This isn’t deep, subtle technical debt. It’s more like leaving keys in the door because nobody added “check the door” to their routine.

\

Pattern #4: Session cookies that trust too much

Another repeat offender: session cookies with defaults from a different era.

I’d often see things like:

  • no Secure flag
  • no HttpOnly
  • no SameSite
  • combined with a lack of basic headers (X-Frame-Options, X-Content-Type-Options, etc.)

In most modern stacks, you can fix 80% of this in one place, centrally. On PHP/Laravel, for example, tweaking session and cookie settings in the framework config, plus a few headers at the web server level, already raises the bar.

Yet it rarely happens by default, especially on sites that were “finished” years ago and only get touched when content changes.

\

Pattern #5: Client‑side libraries from another decade

Finally, the frontend. A lot of these sites still rely on:

  • old jQuery (1.x / 2.x)
  • outdated Bootstrap
  • abandoned plugins from who‑knows‑where

I have sympathy for this one. If you’re the only IT person in a small organization, with no staging environment and no time, touching a core JS lib feels risky. If everything “kind of works,” why poke it?

The problem is that this code often has known CVEs and no upstream support. At some point, not touching it becomes the bigger risk.

The teams that do move forward usually do it in small steps: upgrade the core library, test the critical user journeys, be ready to roll back. That’s boring, methodical work — exactly the kind of work that gets deprioritized when there’s always another fire to put out.


\

Why these mistakes keep repeating

After a while, I stopped being surprised by individual issues and started thinking more about the environment that produces them.

A few patterns stood out:

  • No clear owner. The website lives between “IT” and “communications”. Vendors maintain it, departments own the content, security is “everyone’s job” and therefore nobody’s.
  • No baseline. There’s no short, agreed list of “every public site we run must at least do X, Y and Z” (enforce HTTPS, have CSP, block obvious leaks, etc.).
  • No feedback loop. Once the site is launched, nobody regularly scans it for regressions or new issues. It just quietly ages in place.

You don’t need a nation‑state adversary for things to go wrong here. A misconfigured plugin, a compromised third‑party script or a sloppy backup can be enough.

\

So what can we actually do?

If you’re a developer or consultant working with public‑sector clients (or any small org with similar constraints), here’s what I’d suggest.

None of this requires a new platform. It does require installing a bit of discipline around boring things:

  1. Write down a tiny baseline. Literally a one‑page document that says: \n “Every public‑facing site we run must:
  • enforce HTTPS with HSTS after a transition period,
  • have at least a basic CSP,
  • block access to config/test/backup artifacts,
  • use secure/HTTP‑only/SameSite cookies,
  • avoid severely outdated client‑side libraries.”
  1. Make it part of the contract. If you’re the vendor, include this baseline in your proposal. If you’re the client, ask for it. Make it part of “done,” not a nice‑to‑have.
  2. Automate the checks. Use whatever you like: curl, custom scripts, open‑source scanners, CI jobs. The exact tool matters less than the fact that it runs regularly and someone looks at the results.
  3. Prioritize by impact, not aesthetics. A site that handles payments or logins should get attention before the news archive. Align your energy with where real risk lives.
  4. Plan for small, continuous upgrades. Make it normal to upgrade libraries, tweak headers and refine CSP in small increments instead of waiting 5–10 years for a “big redesign.”

None of this will make headlines. That’s kind of the point. Quiet, unglamorous work on “boring” security details is what keeps a lot of people safe without them ever noticing.

\

Closing thoughts

I started scanning these sites with CivicMeshFlow mostly because I was curious. I kept going because I realized how many residents depend on them every day — to pay bills, read school announcements, check on local services.

Most of the issues I see aren’t there because people don’t care, but because nobody ever gave them time, tools or a baseline.

If you build or maintain public‑facing sites, especially for small organizations, you’re probably closer to this problem than you think. And you have more influence than you might realize: sometimes, all it takes to start changing the pattern is one person asking, “What’s our baseline?” and being willing to write it down.


\ Author bio (for HackerNoon):

I’m Nick Tkachenko, founder and CTO of CivicMeshFlow, an open‑source project focused on improving the security of small local government websites in the U.S. Based in Chicago, I’ve been building PHP/Python apps for 15+ years. Learn more at https://civicmeshflow.com

\ \ \ \ \ \

Piyasa Fırsatı
WHY Logosu
WHY Fiyatı(WHY)
$0.00000001529
$0.00000001529$0.00000001529
0.00%
USD
WHY (WHY) Canlı Fiyat Grafiği
Sorumluluk Reddi: Bu sitede yeniden yayınlanan makaleler, halka açık platformlardan alınmıştır ve yalnızca bilgilendirme amaçlıdır. MEXC'nin görüşlerini yansıtmayabilir. Tüm hakları telif sahiplerine aittir. Herhangi bir içeriğin üçüncü taraf haklarını ihlal ettiğini düşünüyorsanız, kaldırılması için lütfen service@support.mexc.com ile iletişime geçin. MEXC, içeriğin doğruluğu, eksiksizliği veya güncelliği konusunda hiçbir garanti vermez ve sağlanan bilgilere dayalı olarak alınan herhangi bir eylemden sorumlu değildir. İçerik, finansal, yasal veya diğer profesyonel tavsiye niteliğinde değildir ve MEXC tarafından bir tavsiye veya onay olarak değerlendirilmemelidir.

Ayrıca Şunları da Beğenebilirsiniz

Is Putnam Global Technology A (PGTAX) a strong mutual fund pick right now?

Is Putnam Global Technology A (PGTAX) a strong mutual fund pick right now?

The post Is Putnam Global Technology A (PGTAX) a strong mutual fund pick right now? appeared on BitcoinEthereumNews.com. On the lookout for a Sector – Tech fund? Starting with Putnam Global Technology A (PGTAX – Free Report) should not be a possibility at this time. PGTAX possesses a Zacks Mutual Fund Rank of 4 (Sell), which is based on various forecasting factors like size, cost, and past performance. Objective We note that PGTAX is a Sector – Tech option, and this area is loaded with many options. Found in a wide number of industries such as semiconductors, software, internet, and networking, tech companies are everywhere. Thus, Sector – Tech mutual funds that invest in technology let investors own a stake in a notoriously volatile sector, but with a much more diversified approach. History of fund/manager Putnam Funds is based in Canton, MA, and is the manager of PGTAX. The Putnam Global Technology A made its debut in January of 2009 and PGTAX has managed to accumulate roughly $650.01 million in assets, as of the most recently available information. The fund is currently managed by Di Yao who has been in charge of the fund since December of 2012. Performance Obviously, what investors are looking for in these funds is strong performance relative to their peers. PGTAX has a 5-year annualized total return of 14.46%, and is in the middle third among its category peers. But if you are looking for a shorter time frame, it is also worth looking at its 3-year annualized total return of 27.02%, which places it in the middle third during this time-frame. It is important to note that the product’s returns may not reflect all its expenses. Any fees not reflected would lower the returns. Total returns do not reflect the fund’s [%] sale charge. If sales charges were included, total returns would have been lower. When looking at a fund’s performance, it…
Paylaş
BitcoinEthereumNews2025/09/18 04:05
Crypto Casino Luck.io Pays Influencers Up to $500K Monthly – But Why?

Crypto Casino Luck.io Pays Influencers Up to $500K Monthly – But Why?

Crypto casino Luck.io is reportedly paying influencers six figures a month to promote its services, a June 18 X post from popular crypto trader Jordan Fish, aka Cobie, shows. Crypto Influencers Reportedly Earning Six Figures Monthly According to a screenshot of messages between Cobie and an unidentified source embedded in the Wednesday post, the anonymous messenger confirmed that the crypto company pays influencers “around” $500,000 per month to promote the casino. They’re paying extremely well (6 fig per month) pic.twitter.com/AKRVKU9vp4 — Cobie (@cobie) June 18, 2025 However, not everyone was as convinced of the number’s accuracy. “That’s only for Faze Banks probably,” one user replied. “Other influencers are getting $20-40k per month. So, same as other online crypto casinos.” Cobie pushed back on the user’s claims by identifying the messenger as “a crypto person,” going on to state that he knew of “4 other crypto people” earning “above 200k” from Luck.io. Drake’s Massive Stake.com Deal Cobie’s post comes amid growing speculation over celebrity and influencer collaborations with crypto casinos globally. Aubrey Graham, better known as Toronto-based rapper Drake, is reported to make nearly $100 million every year from his partnership with cryptocurrency casino Stake.com. As part of his deal with the Curaçao-based digital casino, the “Nokia” rapper occasionally hosts live-stream gambling sessions for his more than 140 million Instagram followers. Founded by entrepreneurs Ed Craven and Bijan Therani in 2017, the organization allegedly raked in $2.6 billion in 2022. Stake.com has even solidified key partnerships with Alfa Romeo’s F1 team and Liverpool-based Everton Football Club. However, concerns remain over crypto casinos’ legality as a whole , given their massive accessibility and reach online. Earlier this year, Stake was slapped with litigation out of Illinois for supposedly running an illegal online casino stateside while causing “severe harm to vulnerable populations.” “Stake floods social media platforms with slick ads, influencer videos, and flashy visuals, making its games seem safe, fun, and harmless,” the lawsuit claims. “By masking its real-money gambling platform as just another “social casino,” Stake creates exactly the kind of dangerous environment that Illinois gambling laws were designed to stop.”
Paylaş
CryptoNews2025/06/19 04:53
U.S. Banks Near Stablecoin Issuance Under FDIC Genius Act Plan

U.S. Banks Near Stablecoin Issuance Under FDIC Genius Act Plan

The post U.S. Banks Near Stablecoin Issuance Under FDIC Genius Act Plan appeared on BitcoinEthereumNews.com. U.S. banks could soon begin applying to issue payment
Paylaş
BitcoinEthereumNews2025/12/17 02:55