After a deploy, you check the css/ folder on the server and see files that shouldn't be there: oddly-named files like 1Zi847pw4.php, G2Hx052.asp, vRWZ4h.aspx. You're publishing an ASP.NET Core project — a .php file can never come from your own project.
The first reflex is panic: "is my computer infected, did I upload this myself?" But the real question should be: where did these files actually come from?
At first, your own publish output seems like the obvious suspect. But a simple check quickly rules that out: looking at the suspicious files' creation/modification date in FTP or the hosting panel's file manager shows a date and time you never ran a deploy.
Next, the local publish output and the project folder (wwwroot/) get checked one by one — no such file exists there either. So the file never left your machine at all; it was dropped straight onto the server, from outside.
At this point only one explanation remains: another customer's site on the same physical server has a vulnerability (an outdated WordPress or Joomla version, for example), and the attacker got in through it, walked the file system, and left a shell in your folder too.
# FTP / hosting panelinin dosya yöneticisinde bakacağın işaret: tarih uyuşmazlığı
# Senin son deploy'unu yaptığın tarih: 12.04.2026 14:20
# Şüpheli dosyaların değişme tarihi:
css/1Zi847pw4.php 14.04.2026 03:11 <- sen o gün deploy yapmadın
css/G2Hx052.asp 14.04.2026 03:11
css/vRWZ4h.aspx 14.04.2026 03:12
# Aynı klasörü yerel publish çıktınla karşılaştır:
# yerelde bu isimde dosya yoksa, sunucuya dışarıdan atılmış demektir
The core idea of shared hosting is: one physical server, hundreds of customers. Everyone's site sits on the same disk, under the same operating system, separated only by folders.
This model is cheap and convenient, but it carries two major risks:
No matter how clean your own code is, a neighbor's vulnerability isn't your responsibility, but it can still affect you. This is a risk baked into the nature of shared hosting.
A VDS (Virtual Dedicated Server) is a model where resources are separated at the hardware level. CPU cores, RAM, and disk space are genuinely allocated to your own partition — a neighboring account does not share the same file system as you.
The comparison can be summarized like this:
On a VDS, a "neighbor site" can never touch your file system — because technically there is no shared file system to begin with. You have your own OS, your own IIS/Plesk setup, your own security configuration. Responsibility shifts fully to you too — patching, the firewall, and backups are now yours to manage.
If you're going to stay on shared hosting, you can reduce the risk even if you can't eliminate it entirely:
For a critical component (something like a license validation API that needs to stay reachable at all times), the healthiest decision once you reach a certain growth point is to move it to a VDS. Shared hosting is still a reasonable starting point for development and lower-risk pages.
.php, .asp, .aspx on an ASP.NET Core site)