{"id":5630,"date":"2026-11-09T14:21:07","date_gmt":"2026-11-09T13:21:07","guid":{"rendered":"https:\/\/wwwschutz.de\/blog\/?p=5630"},"modified":"2026-11-10T09:50:47","modified_gmt":"2026-11-10T08:50:47","slug":"hosting-pruefen-luecken-schliessen-erneut-pruefen-ein-vorher-nachher-beispiel-mit-dem-security-check","status":"publish","type":"post","link":"https:\/\/wwwschutz.de\/blog\/hosting-pruefen-luecken-schliessen-erneut-pruefen-ein-vorher-nachher-beispiel-mit-dem-security-check\/","title":{"rendered":"Web Hosting pr\u00fcfen, L\u00fccken schlie\u00dfen, erneut pr\u00fcfen: Ein Vorher-Nachher-Beispiel mit dem Security Check"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">\u201eBei uns ist noch nie etwas passiert\u201c ist kein Sicherheitskonzept. Die meisten Angriffe auf Websites nutzen keine exotischen Tricks, sondern bekannte, vermeidbare Schwachstellen: veraltete Software, fehlende Schutzeinstellungen beim Hosting, offene Standardrouten. Das T\u00fcckische daran: Man sieht sie nicht, solange man nicht gezielt nachschaut.<\/p>\n\n\n\n<div class=\"wsb-anim\" id=\"wsb-anim\">\n<canvas class=\"wsb-anim__canvas\" width=\"1600\" height=\"900\" role=\"img\" aria-label=\"Animation zu Web Security: Website pr\u00fcfen, L\u00fccken beheben, erneut pr\u00fcfen\"><\/canvas>\n<button class=\"wsb-anim__btn\" type=\"button\" aria-pressed=\"false\">Pause<\/button>\n<\/div>\n<style>\n#wsb-anim.wsb-anim{position:relative;display:block;width:100%;max-width:1000px;margin:0 auto;padding:0;aspect-ratio:16\/9;overflow:hidden;border-radius:14px;background:#f8f4ec;box-shadow:0 6px 24px rgba(30,45,70,.12);box-sizing:border-box;line-height:1}\n#wsb-anim .wsb-anim__canvas{display:block;width:100%;height:100%;max-width:none;margin:0;padding:0;border:0}\n#wsb-anim .wsb-anim__btn{position:absolute;top:10px;right:10px;margin:0;padding:6px 12px;border:1px solid rgba(28,52,90,.25);border-radius:999px;background:rgba(255,255,255,.88);color:#1c345a;font:600 12px\/1.2 system-ui,-apple-system,\"Segoe UI\",Arial,sans-serif;text-transform:none;letter-spacing:0;box-shadow:none;cursor:pointer;opacity:.7;transition:opacity .2s}\n#wsb-anim .wsb-anim__btn:hover,#wsb-anim .wsb-anim__btn:focus-visible{opacity:1;outline:2px solid #2b6cb0;outline-offset:2px}\n@supports not (aspect-ratio:16\/9){#wsb-anim.wsb-anim{height:0;padding-top:56.25%}#wsb-anim .wsb-anim__canvas{position:absolute;top:0;left:0}}\n<\/style>\n<script>\n(function(){\nvar root=document.getElementById(\"wsb-anim\");\nif(!root){return;}\nif(root.getAttribute(\"data-init\")){return;}\nroot.setAttribute(\"data-init\",\"1\");\nvar cv=root.querySelector(\"canvas\"),btn=root.querySelector(\"button\"),ctx=cv.getContext(\"2d\");\nvar W=1600,H=900,PI=Math.PI,TAU=PI*2;\nvar FONT='\"Segoe UI\",system-ui,-apple-system,\"Helvetica Neue\",Arial,sans-serif';\nvar paint=document.createElement(\"canvas\");paint.width=W;paint.height=H;\nvar pg=paint.getContext(\"2d\");\nvar paper=document.createElement(\"canvas\");paper.width=W;paper.height=H;\nvar C={navy:[214,55,26],blue:[208,68,44],sky:[198,70,86],light:[202,62,76],red:[2,70,50],rose:[2,75,86],green:[146,52,36],mint:[140,48,78],gold:[40,88,56],grey:[215,14,72]};\nvar TX={navy:\"#1c345a\",red:\"#b8322a\",green:\"#1f7a4a\",slate:\"#4a5668\",blue:\"#24609e\"};\nvar S=[],T=[],CL=[],LOOP=60,clock=0,last=0,cix=0,user=false,vis=true,raf=0;\nfunction rnd(a,b){return a+Math.random()*(b-a);}\nfunction dist(a,b){var dx=b[0]-a[0],dy=b[1]-a[1];return Math.sqrt(dx*dx+dy*dy);}\nfunction makePaper(){\nvar g=paper.getContext(\"2d\"),i,x,y,a,vg;\ng.fillStyle=\"#f8f4ec\";g.fillRect(0,0,W,H);\nfor(i=0;i<12000;i++){x=Math.random()*W;y=Math.random()*H;a=Math.random()*0.06;g.fillStyle=Math.random()<0.55?\"rgba(110,90,60,\"+a+\")\":\"rgba(255,255,255,\"+(a*3)+\")\";g.fillRect(x,y,rnd(1,2.5),rnd(1,2.5));}\ng.lineWidth=1;\nfor(i=0;i<320;i++){x=Math.random()*W;y=Math.random()*H;g.strokeStyle=\"rgba(120,100,70,\"+rnd(0.03,0.07)+\")\";g.beginPath();g.moveTo(x,y);g.quadraticCurveTo(x+rnd(-20,20),y+rnd(-20,20),x+rnd(-40,40),y+rnd(-40,40));g.stroke();}\nvg=g.createRadialGradient(W\/2,H\/2,H*0.35,W\/2,H\/2,W*0.65);\nvg.addColorStop(0,\"rgba(255,255,255,0)\");vg.addColorStop(1,\"rgba(150,125,90,0.18)\");\ng.fillStyle=vg;g.fillRect(0,0,W,H);\n}\nfunction pts(fn,len){var n=Math.max(6,Math.ceil(len\/3)),a=[],i;for(i=0;i<=n;i++){a.push(fn(i\/n));}return a;}\nfunction line(x1,y1,x2,y2,wob){\nvar dx=x2-x1,dy=y2-y1,L=Math.sqrt(dx*dx+dy*dy)||1,nx=-dy\/L,ny=dx\/L,ph=rnd(0,TAU),w=wob===undefined?Math.min(L*0.025,10):wob;\nreturn pts(function(t){var o=Math.sin(t*PI)*w*Math.sin(ph)+Math.sin(t*8+ph)*w*0.2;return [x1+dx*t+nx*o,y1+dy*t+ny*o];},L);\n}\nfunction arc(cx,cy,r,a0,a1,wob){\nvar ph=rnd(0,TAU),w=wob===undefined?r*0.03:wob;\nreturn pts(function(t){var a=a0+(a1-a0)*t,rr=r+Math.sin(t*6+ph)*w;return [cx+Math.cos(a)*rr,cy+Math.sin(a)*rr];},Math.abs(a1-a0)*r);\n}\nfunction bez(p0,p1,p2,p3){\nreturn pts(function(t){var u=1-t,a=u*u*u,b=3*u*u*t,c=3*u*t*t,d=t*t*t;return [a*p0[0]+b*p1[0]+c*p2[0]+d*p3[0],a*p0[1]+b*p1[1]+c*p2[1]+d*p3[1]];},dist(p0,p1)+dist(p1,p2)+dist(p2,p3));\n}\nfunction join(list){var out=[],i;for(i=0;i<list.length;i++){out=out.concat(i?list[i].slice(1):list[i]);}return out;}\nfunction poly(p){var segs=[],i;for(i=1;i<p.length;i++){segs.push(line(p[i-1][0],p[i-1][1],p[i][0],p[i][1],2));}return join(segs);}\nfunction Stroke(o){\nvar p=o.p,n=p.length,i,k,cnt,a,b,dx,dy,L;\nthis.p=p;this.w=o.w;this.c=o.c||C.navy;this.t0=o.t;this.d=o.d||0.6;this.er=o.er?1:0;this.al=o.a===undefined?0.92:o.a;this.done=0;\nthis.spl=this.er?0:(o.spl===undefined?1:o.spl);\nthis.nm=[];\nfor(i=0;i<n;i++){a=p[Math.max(0,i-1)];b=p[Math.min(n-1,i+1)];dx=b[0]-a[0];dy=b[1]-a[1];L=Math.sqrt(dx*dx+dy*dy)||1;this.nm.push([-dy\/L,dx\/L]);}\ncnt=Math.max(5,Math.min(64,Math.round(o.w*0.8)));\nthis.br=[];\nfor(k=0;k<cnt;k++){this.br.push({o:(k\/(cnt-1)-0.5)+(this.er?0:rnd(-0.04,0.04)),lw:this.er?o.w\/cnt*3:o.w\/cnt*rnd(1.3,2.8),dl:rnd(-9,9),da:this.er?1:rnd(0.45,1),dry:this.er?2:rnd(0.72,1.05),j:rnd(0,TAU)});}\n}\nStroke.prototype.splat=function(g,p){\nvar c=this.c,m=Math.round(rnd(2,6)),i,r,a,d;\nfor(i=0;i<m;i++){a=rnd(0,TAU);d=rnd(this.w*0.4,this.w*1.3);r=rnd(1,Math.max(2,this.w*0.08));g.fillStyle=\"hsla(\"+c[0]+\",\"+c[1]+\"%,\"+c[2]+\"%,\"+(rnd(0.3,0.8)*this.al)+\")\";g.beginPath();g.arc(p[0]+Math.cos(a)*d,p[1]+Math.sin(a)*d,r,0,TAU);g.fill();}\n};\nStroke.prototype.up=function(g,t){\nvar q=(t-this.t0)\/this.d,e,n,to,from,k,i,b,pr,x,y,tp,al,c=this.c;\nif(q<=0){return;}\nif(q>1){q=1;}\ne=q<0.5?2*q*q:1-Math.pow(-2*q+2,2)\/2;\nn=this.p.length-1;to=Math.round(e*n);from=this.done;\nif(to<=from){return;}\ng.save();\ng.globalCompositeOperation=this.er?\"destination-out\":\"source-over\";\ng.lineCap=\"round\";g.lineJoin=\"round\";\nfor(k=0;k<this.br.length;k++){\nb=this.br[k];\ntp=(from+to)\/2\/n;\nal=b.da*this.al;\nif(tp>b.dry){al=al*Math.max(0,1-(tp-b.dry)*5);}\nif(al<=0.01){continue;}\ng.strokeStyle=this.er?\"rgba(0,0,0,\"+al+\")\":\"hsla(\"+c[0]+\",\"+c[1]+\"%,\"+Math.max(5,Math.min(97,c[2]+b.dl))+\"%,\"+al+\")\";\ng.lineWidth=b.lw;\ng.beginPath();\nfor(i=from;i<=to;i++){\ntp=i\/n;\npr=this.er?1:Math.min(1,0.35+tp*7,0.25+(1-tp)*5);\nx=this.p[i][0]+this.nm[i][0]*b.o*this.w*pr+Math.sin(i*0.7+b.j)*0.6;\ny=this.p[i][1]+this.nm[i][1]*b.o*this.w*pr+Math.cos(i*0.6+b.j)*0.6;\nif(i===from){g.moveTo(x,y);}else{g.lineTo(x,y);}\n}\ng.stroke();\n}\nif(this.spl){if(from===0){this.splat(g,this.p[0]);}if(to===n){this.splat(g,this.p[n]);}}\ng.restore();\nthis.done=to;\n};\nfunction st(p,w,c,t,d,o){o=o||{};o.p=p;o.w=w;o.c=c;o.t=t;o.d=d;S.push(new Stroke(o));return p;}\nfunction er(p,w,t,d){S.push(new Stroke({p:p,w:w,t:t,d:d,er:1}));}\nfunction tx(s,x,y,sz,col,t0,t1,o){o=o||{};T.push({s:s,x:x,y:y,sz:sz,c:col,t0:t0,t1:t1,al:o.al||\"center\",wt:o.wt||\"700\"});}\nfunction wipe(t0){var y,i=0,r;for(y=-10;y<=H+60;y+=125){r=i%2===0;er(r?line(-120,y,W+120,y+rnd(-30,30),14):line(W+120,y,-120,y+rnd(-30,30),14),240,t0+i*0.13,0.55);i++;}CL.push(t0+i*0.13+0.6);return t0+i*0.13+0.75;}\nfunction arrow(x1,y1,x2,y2,w,c,t){\nvar a=Math.atan2(y2-y1,x2-x1),h=w*3.2,ps=[];\nps.push(st(line(x1,y1,x2,y2),w,c,t,0.5));\nps.push(st(line(x2,y2,x2-Math.cos(a-0.5)*h,y2-Math.sin(a-0.5)*h,2),w*0.85,c,t+0.45,0.18));\nps.push(st(line(x2,y2,x2-Math.cos(a+0.5)*h,y2-Math.sin(a+0.5)*h,2),w*0.85,c,t+0.55,0.18));\nreturn ps;\n}\nfunction build(){\nvar t,i,k,y,T2,U,V,X,Y,A,F,R,sR,sL,ar=[],mg=[],cc=[],fx=[\"Updates eingespielt\",\"Login abgesichert\",\"Header gesetzt\",\"DMARC aktiv\"];\nS=[];T=[];CL=[];\nst(line(120,430,1480,455,18),230,C.sky,0.2,1.6,{a:0.6});\nst(line(180,525,1430,500,16),150,C.light,0.9,1.4,{a:0.45});\nst(line(260,250,420,226),38,C.red,2.9,0.35,{a:0.85});\nst(line(1190,668,1350,640),38,C.green,3.2,0.35,{a:0.85});\nst(line(430,590,1170,578,6),20,C.navy,2.3,0.9);\ntx(\"Web Security\",800,450,132,TX.navy,1.3,8.4);\ntx(\"Ein Vorher-Nachher-Beispiel\",800,300,34,TX.slate,3.5,8.4,{wt:\"600\"});\ntx(\"Pr\u00fcfen. Beheben. Erneut pr\u00fcfen.\",800,655,44,TX.blue,2.8,8.4,{wt:\"600\"});\nt=wipe(8.1);\nT2=t;\ntx(\"Ihre Website \u2013 von au\u00dfen betrachtet\",800,95,52,TX.navy,T2+0.2,T2+8.3);\nst(line(450,230,1150,233,3),12,C.navy,T2+0.3,0.5);\nst(line(1150,233,1147,720,3),12,C.navy,T2+0.7,0.5);\nst(line(1147,720,452,717,3),12,C.navy,T2+1.1,0.5);\nst(line(452,717,450,230,3),12,C.navy,T2+1.5,0.5);\nst(line(464,262,1136,262,3),48,C.grey,T2+1.9,0.6,{a:0.85,spl:0});\nst(line(484,262,494,262,1),18,C.red,T2+2.4,0.12,{spl:0});\nst(line(514,262,524,262,1),18,C.gold,T2+2.5,0.12,{spl:0});\nst(line(544,262,554,262,1),18,C.green,T2+2.6,0.12,{spl:0});\nst(line(500,342,1100,346,6),84,C.light,T2+2.7,0.7,{a:0.8});\nst(line(520,352,1080,336,6),46,C.sky,T2+3.0,0.6,{a:0.7,spl:0});\nst(line(500,430,1010,431,3),14,C.grey,T2+3.3,0.4,{spl:0});\nst(line(500,470,1090,468,3),14,C.grey,T2+3.5,0.4,{spl:0});\nst(line(500,510,880,511,3),14,C.grey,T2+3.7,0.4,{spl:0});\nst(line(505,622,780,620,4),110,C.sky,T2+3.9,0.5,{a:0.7,spl:0});\nst(line(820,620,1095,623,4),110,C.mint,T2+4.1,0.5,{a:0.65,spl:0});\nA=[[110,380,435,378,60,\"Veraltete Software\",\"left\"],[110,615,435,605,60,\"Offene Login-Route\",\"left\"],[1490,380,1165,400,1540,\"Fehlende Header\",\"right\"],[1490,615,1165,605,1540,\"Gef\u00e4lschte E-Mails\",\"right\"]];\nF=[[520,378],[520,600],[1080,400],[1080,600]];\nfor(i=0;i<4;i++){k=T2+4.6+i*0.55;ar=ar.concat(arrow(A[i][0],A[i][1],A[i][2],A[i][3],14,C.red,k));tx(A[i][5],A[i][4],A[i][1]-52,30,TX.red,k,T2+8.3,{al:A[i][6]});}\ntx(\"Unsichtbar \u2013 bis man gezielt nachschaut.\",800,820,38,TX.slate,T2+6.6,T2+8.4,{wt:\"600\"});\nU=T2+8.6;\ntx(\"Schritt 1: Pr\u00fcfen\",800,95,56,TX.navy,U,U+7.4);\ntx(\"Von au\u00dfen \u2013 so, wie es auch ein Angreifer tut.\",800,152,28,TX.slate,U+0.4,U+7.4,{wt:\"500\"});\nmg.push([st(arc(800,470,60,0,TAU,4),105,C.sky,U+0.4,0.6,{a:0.35,spl:0}),105]);\nmg.push([st(arc(800,470,115,-PI\/2,TAU-PI\/2+0.25,3),18,C.navy,U+0.8,1.0),18]);\nmg.push([st(line(884,554,1005,675,4),34,C.navy,U+1.7,0.45),34]);\nfor(i=0;i<4;i++){k=U+2.3+i*0.45;cc.push(st(arc(F[i][0],F[i][1],42,-0.5,TAU+0.2,2),9,C.red,k,0.5,{spl:0}));tx(i<2?\"Kritisch\":\"Hoch\",A[i][4],A[i][1]-52,30,TX.red,k,U+7.4,{al:A[i][6]});}\ntx(\"20 Befunde \u2013 sortiert nach Kritikalit\u00e4t\",800,820,38,TX.slate,U+3.6,U+7.5,{wt:\"600\"});\nV=U+7.8;\ntx(\"Schritt 2: Beheben\",800,95,56,TX.navy,V,V+7.8);\ntx(\"Mit Backup \u2013 eine \u00c4nderung nach der anderen.\",800,152,28,TX.slate,V+0.4,V+7.8,{wt:\"500\"});\nfor(i=0;i<ar.length;i++){er(ar[i],44,V+0.3+i*0.08,0.35);}\nfor(i=0;i<mg.length;i++){er(mg[i][0],mg[i][1]+26,V+0.9+i*0.15,0.5);}\nfor(i=0;i<cc.length;i++){er(cc[i],36,V+1.4+i*0.12,0.45);}\nk=V+2.0;\nsR=join([line(800,170,1250,222,4),bez([1250,222],[1270,690],[1150,815],[800,880])]);\nsL=join([line(800,170,350,222,4),bez([350,222],[330,690],[450,815],[800,880])]);\nst(sR,90,C.sky,k,1.2,{a:0.35,spl:0});st(sL,90,C.sky,k,1.2,{a:0.35,spl:0});\nst(sR,24,C.blue,k+0.2,1.3);st(sL,24,C.blue,k+0.2,1.3);\nfor(i=0;i<4;i++){k=V+3.6+i*0.45;st(poly([[F[i][0]-28,F[i][1]+2],[F[i][0]-6,F[i][1]+26],[F[i][0]+32,F[i][1]-28]]),17,C.green,k,0.45);tx(fx[i],A[i][4],A[i][1]-52,30,TX.green,k,V+7.8,{al:A[i][6]});}\nt=wipe(V+8.1);\nX=t+0.1;\ntx(\"Schritt 3: Erneut pr\u00fcfen\",800,95,56,TX.navy,X,X+8.6);\ntx(\"Der Re-Check zeigt, ob die Ma\u00dfnahmen wirklich wirken.\",800,152,28,TX.slate,X+0.4,X+8.6,{wt:\"500\"});\ntx(\"Gesamtrisiko\",470,320,34,TX.navy,X+0.6,X+8.6);\nst(arc(260,480,58,0,TAU,3),105,C.rose,X+0.6,0.6,{a:0.7,spl:0});\nst(arc(260,480,110,-PI\/2,TAU-PI\/2+0.3,3),16,C.red,X+0.9,0.8);\ntx(\"D\",260,486,130,TX.red,X+1.5,X+8.6);\ntx(\"Vorher\",260,640,32,TX.slate,X+1.5,X+8.6,{wt:\"600\"});\narrow(395,480,535,480,14,C.navy,X+2.1);\nst(arc(680,480,58,0,TAU,3),105,C.mint,X+2.6,0.6,{a:0.75,spl:0});\nst(arc(680,480,110,-PI\/2,TAU-PI\/2+0.3,3),16,C.green,X+2.9,0.8);\ntx(\"B\",680,486,130,TX.green,X+3.5,X+8.6);\ntx(\"Nachher\",680,640,32,TX.slate,X+3.5,X+8.6,{wt:\"600\"});\nR=[[\"Gesamtrisiko\",\"D\",\"B\",0.38,0.78],[\"SSL\/TLS\",\"C+\",\"A\",0.6,1],[\"HTTP-Header\",\"F\",\"B\",0.16,0.78],[\"DNS und E-Mail\",\"B\",\"A\",0.78,1]];\nfor(i=0;i<4;i++){y=300+i*125;k=X+4.0+i*0.5;tx(R[i][0]+\":  \"+R[i][1]+\"  \u2192  \"+R[i][2],905,y-40,28,TX.navy,k,X+8.6,{al:\"left\",wt:\"600\"});st(line(905,y,905+540*R[i][3],y,3),22,C.grey,k+0.1,0.35,{spl:0});st(line(905,y+30,905+540*R[i][4],y+30,3),22,C.green,k+0.35,0.45,{spl:0});}\nst(line(905,790,945,790,1),20,C.grey,X+4.0,0.2,{spl:0});\ntx(\"Vorher\",960,790,24,TX.slate,X+4.0,X+8.6,{al:\"left\",wt:\"600\"});\nst(line(1080,790,1120,790,1),20,C.green,X+4.2,0.2,{spl:0});\ntx(\"Nachher\",1135,790,24,TX.slate,X+4.2,X+8.6,{al:\"left\",wt:\"600\"});\ntx(\"14 erledigt \u00b7 3 zur\u00fcckgestellt \u00b7 2 nicht relevant \u00b7 1 ignoriert\",800,855,28,TX.slate,X+6.2,X+8.7,{wt:\"600\"});\nt=wipe(X+9.0);\nY=t+0.1;\ntx(\"Sicherheit ist ein Prozess.\",800,95,60,TX.navy,Y+0.3,Y+8.6);\nst(arc(800,500,110,0,TAU,6),150,C.sky,Y+0.2,1.2,{a:0.5,spl:0});\nst(arc(800,452,80,PI,TAU,3),26,C.navy,Y+0.9,0.6);\nfor(i=0;i<6;i++){st(line(690,470+i*38,910,468+i*38,3),46,C.gold,Y+1.5+i*0.13,0.28,{a:0.95,spl:0});}\nst(poly([[685,445],[915,447],[913,690],[687,688],[685,445]]),12,C.navy,Y+2.4,1.0,{spl:0});\nst(arc(800,538,10,0,TAU,1),16,C.navy,Y+3.4,0.25,{spl:0});\nst(line(800,548,800,600,1),16,C.navy,Y+3.6,0.25,{spl:0});\nst(poly([[960,560],[990,592],[1050,520]]),16,C.green,Y+3.9,0.4);\ntx(\"Pr\u00fcfen \u00b7 Beheben \u00b7 Dokumentieren \u00b7 Erneut pr\u00fcfen\",800,790,38,TX.blue,Y+4.2,Y+8.6,{wt:\"600\"});\ntx(\"Planen Sie die Pr\u00fcfung als festen Termin ein.\",800,850,30,TX.slate,Y+5.0,Y+8.6,{wt:\"500\"});\nt=wipe(Y+8.8);\nLOOP=t+0.3;\n}\nfunction drawText(o,t){\nvar a,r,tw,lx;\nif(t<o.t0){return;}\nif(t>o.t1){return;}\na=Math.max(0,Math.min(1,(t-o.t0)\/0.5,(o.t1-t)\/0.5));\nr=Math.min(1,(t-o.t0)\/0.9);\nr=1-Math.pow(1-r,3);\nctx.font=o.wt+\" \"+o.sz+\"px \"+FONT;\nctx.textAlign=o.al;ctx.textBaseline=\"middle\";\ntw=ctx.measureText(o.s).width;\nlx=o.al===\"center\"?o.x-tw\/2:(o.al===\"right\"?o.x-tw:o.x);\nctx.save();\nctx.beginPath();ctx.rect(lx-20,o.y-o.sz,(tw+40)*r,o.sz*2);ctx.clip();\nctx.globalAlpha=a;\nctx.shadowColor=\"rgba(248,244,236,0.95)\";ctx.shadowBlur=10;\nctx.fillStyle=o.c;\nctx.fillText(o.s,o.x,o.y+(1-a)*8);\nctx.restore();\n}\nfunction reset(){clock=0;cix=0;pg.clearRect(0,0,W,H);build();}\nfunction step(dt){\nvar i;\nclock+=dt;\nif(clock>=LOOP){reset();}\nwhile(cix<CL.length){if(CL[cix]>clock){break;}pg.clearRect(0,0,W,H);cix++;}\nfor(i=0;i<S.length;i++){S[i].up(pg,clock);}\n}\nfunction draw(){\nvar i;\nctx.clearRect(0,0,W,H);\nctx.drawImage(paper,0,0);\nctx.drawImage(paint,0,0);\nfor(i=0;i<T.length;i++){drawText(T[i],clock);}\nctx.fillStyle=\"rgba(28,52,90,0.18)\";ctx.fillRect(0,H-6,W*clock\/LOOP,6);\n}\nfunction running(){return vis?!user:false;}\nfunction frame(now){\nvar dt=last?(now-last)\/1000:0;\nraf=0;last=now;\nif(dt>0.05){dt=0.05;}\nstep(dt);draw();schedule();\n}\nfunction schedule(){if(raf){return;}if(!running()){last=0;return;}raf=requestAnimationFrame(frame);}\nbtn.addEventListener(\"click\",function(){user=!user;btn.textContent=user?\"Abspielen\":\"Pause\";btn.setAttribute(\"aria-pressed\",user?\"true\":\"false\");schedule();});\nmakePaper();reset();\nif(window.matchMedia){if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches){user=true;while(clock<6.5){step(0.05);}draw();btn.textContent=\"Abspielen\";btn.setAttribute(\"aria-pressed\",\"true\");}}\nif(\"IntersectionObserver\" in window){new IntersectionObserver(function(en){vis=en[0].isIntersecting;schedule();},{threshold:0.05}).observe(root);}\ndraw();schedule();\n})();\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\">Dieser Beitrag zeigt den ganzen Kreislauf an einem Beispiel: Ein Webhosting mit WordPress-Website wird gepr\u00fcft, die Befunde werden Schritt f\u00fcr Schritt behoben, anschlie\u00dfend wird erneut gepr\u00fcft. Dabei geht es nicht um Theorie, sondern um den praktischen Ablauf, den Sie auf Ihre eigene Website \u00fcbertragen k\u00f6nnen.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Hinweis zum Beispiel:<\/strong> Die geschilderte Website ist ein Szenario. Die Ausgangsbefunde sind dem u.g. Security Checks nachempfunden und typisch f\u00fcr viele Websites auf Standard-Hosting. Alle Werte dienen der Veranschaulichung. Ihre eigenen Ergebnisse werden abweichen, und Sie sollten nur Websites pr\u00fcfen, f\u00fcr die Sie verantwortlich sind oder eine Erlaubnis haben.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Das Wichtigste in K\u00fcrze<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ein Vorher-Nachher-Vergleich macht Sicherheit messbar: Ohne Ausgangswert l\u00e4sst sich kein Fortschritt belegen.<\/li>\n\n\n\n<li>Der Ablauf besteht aus f\u00fcnf Schritten: pr\u00fcfen, Bericht lesen und priorisieren, beheben, dokumentieren, erneut pr\u00fcfen.<\/li>\n\n\n\n<li>Viele Befunde lassen sich in Minuten l\u00f6sen, etwa DNS-Eintr\u00e4ge und HTTP-Header. Andere brauchen den Hoster.<\/li>\n\n\n\n<li>Ein Backup vor jeder \u00c4nderung ist Pflicht, \u00c4nderungen erfolgen nacheinander und nicht alle auf einmal.<\/li>\n\n\n\n<li>Nach den Korrekturen best\u00e4tigt ein Re-Check, ob die Ma\u00dfnahmen wirklich wirken.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Die Ausgangslage im Beispiel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Unser Beispielbetrieb, nennen wir ihn \u201eBeispiel-Betrieb\u201c, betreibt unter <code>beispiel-betrieb.de<\/code> eine WordPress-Website auf einem klassischen Shared-Hosting-Tarif. Die Seite wurde vor Jahren eingerichtet, ein Dienstleister hat sie gelegentlich gepflegt, zuletzt aber vor l\u00e4ngerer Zeit. Es gibt ein Kontaktformular, einen Newsletter-Dienst und E-Mail-Postf\u00e4cher beim selben Anbieter.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Frage steht im Raum: Wie sicher ist das eigentlich, und was genau sollte zuerst angepackt werden?<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"534\" src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1024x534.png\" alt=\"F\u00fcnf Schritte vom ersten Scan bis zum Nachweis: Pr\u00fcfen, Priorisieren, Beheben, Dokumentieren und Erneut pr\u00fcfen. Ein gestrichelter Pfeil f\u00fchrt von Schritt f\u00fcnf zur\u00fcck zu Schritt zwei.\" class=\"wp-image-5633\" srcset=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1024x534.png 1024w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-300x157.png 300w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-768x401.png 768w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1536x801.png 1536w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-2048x1069.png 2048w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-640x334.png 640w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Vom Scan bis zum Ergebnis.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 1: Die erste Pr\u00fcfung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr die Bestandsaufnahme verwenden wir den <a href=\"https:\/\/wwwschutz.de\/security-checks.html\">Website Security Check<\/a>. Er pr\u00fcft eine Website von au\u00dfen, so wie es auch ein Angreifer tun w\u00fcrde, und fasst alles in einem Bericht zusammen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Was gepr\u00fcft wird<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr ein Webhosting sind besonders diese Bereiche aufschlussreich:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Domain und DNS:<\/strong> SPF, DKIM, DMARC und weitere Eintr\u00e4ge, die vor gef\u00e4lschten E-Mails im Namen Ihrer Domain sch\u00fctzen<\/li>\n\n\n\n<li><strong>Hosting und Infrastruktur:<\/strong> Provider, Mail-Server, CDN und Netzwerkzuordnung (ASN), einschlie\u00dflich einer Sicherheitsanalyse des Mail-Providers<\/li>\n\n\n\n<li><strong>SSL\/TLS:<\/strong> Zertifikat, unterst\u00fctzte Protokollversionen, Cipher-Suites und HSTS<\/li>\n\n\n\n<li><strong>Web-Server-Antworten:<\/strong> Sicherheits-Header, aktive TRACE-Methode und verr\u00e4terische Server-Banner<\/li>\n\n\n\n<li><strong>CMS und Plugins:<\/strong> Erkennung von WordPress, TYPO3 und anderen Systemen sowie Abgleich mit bekannten Schwachstellen (CVE)<\/li>\n\n\n\n<li><strong>JavaScript und Formulare:<\/strong> Pr\u00fcfung auf XSS-Risiken und unsichere Formularverarbeitung<\/li>\n\n\n\n<li><strong>Cookies und Speicher:<\/strong> Cookies, LocalStorage und SessionStorage auf sensible Inhalte<\/li>\n\n\n\n<li><strong>IP-Reputation:<\/strong> Blacklist- und Abuse-Eintr\u00e4ge, die auch dann auftreten k\u00f6nnen, wenn ein Nachbar auf demselben Server auff\u00e4llig wird<\/li>\n\n\n\n<li><strong>security.txt:<\/strong> Pr\u00fcfung, ob ein Kontaktweg f\u00fcr Sicherheitsmeldungen nach RFC 9116 vorhanden ist<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Der Scanner arbeitet regelbasiert. K\u00fcnstliche Intelligenz kommt laut Anbieter nur f\u00fcr die verst\u00e4ndliche Zusammenfassung einzelner Befunde zum Einsatz, die Diagnosen selbst stammen aus festen Pr\u00fcfroutinen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ablauf und Aufwand<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der Ablauf ist bewusst einfach: URL eingeben, der Scan startet automatisch, am Ende kommt ein Link zum fertigen Bericht per E-Mail. Der Scan dauert in der Regel etwa 15 Minuten, arbeitet mit geringer Last und ver\u00e4ndert nichts an Ihrer Website.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Punkt verdient Aufmerksamkeit: Der Standard-Scan enth\u00e4lt einen leichtgewichtigen Portscan, um die Backend-Infrastruktur zu erfassen. Wer das nicht m\u00f6chte, kann ihn bei der Bestellung abw\u00e4hlen und verliert dadurch nur die Pr\u00fcfung der Backend-Software und offener Ports. Alle \u00fcbrigen Bereiche bleiben unver\u00e4ndert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr den Vorher-Nachher-Vergleich bietet sich der Pro-Check an, denn er enth\u00e4lt Re-Checks innerhalb von 30 Tagen. Genau das brauchen wir in Schritt 5.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 2: Den Bericht lesen und priorisieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Bericht beginnt mit einer Gesamtbewertung und sortiert die Befunde nach Kritikalit\u00e4t. Jeder Befund enth\u00e4lt eine verst\u00e4ndliche Erkl\u00e4rung, die m\u00f6glichen Folgen und konkrete L\u00f6sungsschritte. Bei Schwachstellen (CVE) gibt es zus\u00e4tzlich eine Diagnose-Anleitung, mit der sich pr\u00fcfen l\u00e4sst, ob man tats\u00e4chlich betroffen ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im Beispiel ergibt der erste Scan diese Ausgangsbewertung:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Bereich<\/th><th>Bewertung vorher<\/th><\/tr><\/thead><tbody><tr><td>Gesamtrisiko<\/td><td>D<\/td><\/tr><tr><td>SSL\/TLS<\/td><td>C+<\/td><\/tr><tr><td>HTTP-Header<\/td><td>F<\/td><\/tr><tr><td>DNS und E-Mail<\/td><td>B<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Insgesamt meldet der Bericht 20 Befunde, davon 8 mit globaler Wirkung (Infrastruktur, Server, DNS) und 12 seitenspezifische. Die zehn wichtigsten im \u00dcberblick:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Bereich<\/th><th>Befund<\/th><th>Schweregrad<\/th><\/tr><\/thead><tbody><tr><td>CMS<\/td><td>WordPress-Kern veraltet, bekannte Schwachstellen<\/td><td>Kritisch<\/td><\/tr><tr><td>CMS<\/td><td>Login-Route <code>\/wp-admin<\/code> ohne Zusatzschutz erreichbar<\/td><td>Kritisch<\/td><\/tr><tr><td>JavaScript<\/td><td>Unsichere <code>innerHTML<\/code>-Zuweisung auf der Kontaktseite (XSS-Risiko)<\/td><td>Kritisch<\/td><\/tr><tr><td>DNS<\/td><td>Keine DMARC-Richtlinie<\/td><td>Hoch<\/td><\/tr><tr><td>Formular<\/td><td>Kontaktformular ohne CSRF-Schutz<\/td><td>Hoch<\/td><\/tr><tr><td>CMS<\/td><td><code>readme.html<\/code> \u00f6ffentlich erreichbar, verr\u00e4t die Version<\/td><td>Hoch<\/td><\/tr><tr><td>CMS<\/td><td>Benutzerliste \u00fcber die REST-API auslesbar<\/td><td>Hoch<\/td><\/tr><tr><td>HTTP-Header<\/td><td>Wichtige Sicherheits-Header fehlen<\/td><td>Hoch<\/td><\/tr><tr><td>TLS<\/td><td>Veraltete Protokollversionen noch aktiv<\/td><td>Hoch<\/td><\/tr><tr><td>Cookies<\/td><td>Sensible Werte in Cookies und LocalStorage<\/td><td>Hoch<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Dazu kommen kleinere Punkte wie ein Server-Banner, das Software und Version verr\u00e4t, und eine fehlende <code>security.txt<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Falsch-positive Treffer vermeiden<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Erkennt der Scanner eine Softwareversion falsch, kann das zu unn\u00f6tigen Treffern f\u00fchren. Im Bericht l\u00e4sst sich die erkannte Version deshalb korrigieren oder erg\u00e4nzen. Die Angabe wird gespeichert und beim n\u00e4chsten Scan ber\u00fccksichtigt. Das verbessert die Qualit\u00e4t der Schwachstellenanalyse sp\u00fcrbar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Die Reihenfolge festlegen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bei 20 Befunden hilft eine einfache Regel:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Zuerst ein vollst\u00e4ndiges Backup<\/strong> von Dateien und Datenbank, bei Bedarf zus\u00e4tzlich ein Test auf einer Staging-Kopie.<\/li>\n\n\n\n<li><strong>Dann die kritischen Befunde<\/strong>, weil sie am h\u00e4ufigsten ausgenutzt werden.<\/li>\n\n\n\n<li><strong>Danach die schnellen Erfolge:<\/strong> DNS-Eintr\u00e4ge, HTTP-Header, Datei-Bereinigung. Sie bringen viel Wirkung bei wenig Aufwand.<\/li>\n\n\n\n<li><strong>Der Rest wird geplant<\/strong>, etwa Rollout von Zwei-Faktor-Anmeldung oder strengere Richtlinien.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Wer kann was beheben?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nicht jeder Befund liegt in Ihrer Hand. Bei Shared Hosting entscheidet der Anbieter \u00fcber Serverdetails:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Befund<\/th><th>Selbst l\u00f6sbar?<\/th><th>Wo<\/th><\/tr><\/thead><tbody><tr><td>WordPress, Plugins, Themes aktualisieren<\/td><td>Ja<\/td><td>WordPress-Backend<\/td><\/tr><tr><td>PHP-Version anheben<\/td><td>Meist ja<\/td><td>Kundenmen\u00fc des Hosters<\/td><\/tr><tr><td>DNS-Eintr\u00e4ge (SPF, DMARC, DKIM)<\/td><td>Ja<\/td><td>DNS-Verwaltung beim Hoster oder Registrar<\/td><\/tr><tr><td>HTTP-Header, Weiterleitung auf HTTPS<\/td><td>Meist ja<\/td><td><code>.htaccess<\/code> oder Kundenmen\u00fc<\/td><\/tr><tr><td>TLS-Protokollversionen<\/td><td>Selten<\/td><td>Support des Hosters<\/td><\/tr><tr><td>Server-Banner, TRACE-Methode<\/td><td>Selten<\/td><td>Support des Hosters<\/td><\/tr><tr><td>Offene Ports, geteilte IP-Reputation<\/td><td>Nein<\/td><td>Support des Hosters<\/td><\/tr><tr><td>Formular- und JavaScript-Fehler<\/td><td>Ja<\/td><td>Theme, Plugin oder Entwickler<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 3: Die Probleme beheben<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Gehen wir die wichtigsten Befunde der Reihe nach durch. Die Beispiele verwenden <code>beispiel-betrieb.de<\/code> als Platzhalter. Wichtig: Testen Sie jede \u00c4nderung und nehmen Sie immer nur eine nach der anderen vor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Software aktualisieren<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Veraltete Software ist der h\u00e4ufigste Einstiegspunkt f\u00fcr Angriffe. Das gilt f\u00fcr den WordPress-Kern ebenso wie f\u00fcr Plugins, Themes und die PHP-Version.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Vollst\u00e4ndiges Backup erstellen.<\/li>\n\n\n\n<li>WordPress-Kern, Plugins und Theme im Backend aktualisieren (Dashboard, Aktualisierungen).<\/li>\n\n\n\n<li>Nicht mehr ben\u00f6tigte oder nicht mehr gepflegte Plugins entfernen, nicht nur deaktivieren.<\/li>\n\n\n\n<li>Im Kundenmen\u00fc des Hosters eine aktuell unterst\u00fctzte PHP-Version ausw\u00e4hlen und die Seite danach testen.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Mehr zur Bedeutung bekannter L\u00fccken lesen Sie im Beitrag <a href=\"https:\/\/wwwschutz.de\/blog\/angreifer-brauchen-sekunden-ihre-website-braucht-einen-plan\/\">Angreifer brauchen Sekunden \u2013 Ihre Website braucht einen Plan<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"775\" src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/scores_vorher_nachher_befundstatus_korrigiert-1024x775.png\" alt=\"Vier Bewertungen vor und nach den Korrekturen: Gesamtrisiko von D auf B, SSL\/TLS von C+ auf A, HTTP-Header von F auf B, DNS und E-Mail von B auf A. Darunter der Status der 20 Befunde: 14 erledigt, 2 nicht relevant, 3 zur\u00fcckgestellt, 1 bewusst ignoriert.\" class=\"wp-image-5635\" srcset=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/scores_vorher_nachher_befundstatus_korrigiert-1024x775.png 1024w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/scores_vorher_nachher_befundstatus_korrigiert-300x227.png 300w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/scores_vorher_nachher_befundstatus_korrigiert-768x581.png 768w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/scores_vorher_nachher_befundstatus_korrigiert-1536x1162.png 1536w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/scores_vorher_nachher_befundstatus_korrigiert-2048x1549.png 2048w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/scores_vorher_nachher_befundstatus_korrigiert-640x484.png 640w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Vorher-Nacher Vergleich Web Hosting.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">E-Mail-Absicherung im DNS<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ohne DMARC k\u00f6nnen Dritte E-Mails in Ihrem Namen verschicken. Die Empf\u00e4nger erkennen die F\u00e4lschung oft nicht. Die L\u00f6sung sind Eintr\u00e4ge in der DNS-Verwaltung Ihrer Domain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Zun\u00e4chst DMARC im Beobachtungsmodus anlegen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Name: _dmarc.beispiel-betrieb.de\nTyp:  TXT\nWert: v=DMARC1; p=none; rua=mailto:dmarc@beispiel-betrieb.de<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn die Berichte zeigen, dass nur legitime Absender auftauchen, versch\u00e4rfen Sie die Richtlinie schrittweise auf <code>p=quarantine<\/code> und sp\u00e4ter auf <code>p=reject<\/code>. Voraussetzung sind ein korrekter SPF-Eintrag und DKIM beim Mail-Anbieter:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Name: beispiel-betrieb.de\nTyp:  TXT\nWert: v=spf1 include:spf.ihr-mailanbieter.de ~all<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Es darf nur einen SPF-Eintrag pro Domain geben. Den passenden <code>include<\/code>-Wert nennt Ihr Mail-Anbieter.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">HTTPS erzwingen und HTTP-Header setzen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Fehlende Sicherheits-Header sind einfach zu beheben und bringen viel. Bei Apache erg\u00e4nzen Sie in der <code>.htaccess<\/code>, sofern das Modul <code>mod_headers<\/code> aktiv ist:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RewriteEngine On\nRewriteCond %{HTTPS} off\nRewriteRule ^ https:\/\/%{HTTP_HOST}%{REQUEST_URI} &#91;L,R=301]\n\n&lt;IfModule mod_headers.c&gt;\nHeader always set Strict-Transport-Security \"max-age=86400\"\nHeader always set X-Content-Type-Options \"nosniff\"\nHeader always set X-Frame-Options \"SAMEORIGIN\"\nHeader always set Referrer-Policy \"strict-origin-when-cross-origin\"\nHeader always set Permissions-Policy \"geolocation=(), microphone=(), camera=()\"\n&lt;\/IfModule&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Bei nginx tragen Sie die Zeilen im <code>server<\/code>-Block ein:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_header Strict-Transport-Security \"max-age=86400\" always;\nadd_header X-Content-Type-Options \"nosniff\" always;\nadd_header X-Frame-Options \"SAMEORIGIN\" always;\nadd_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\nserver_tokens off;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Zwei Hinweise dazu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>HSTS<\/strong> zun\u00e4chst mit kurzer Laufzeit (hier ein Tag) setzen und erst nach erfolgreichem Test verl\u00e4ngern, etwa auf ein Jahr. Nehmen Sie <code>includeSubDomains<\/code> nur dazu, wenn alle Subdomains \u00fcber HTTPS erreichbar sind.<\/li>\n\n\n\n<li><strong>Content-Security-Policy<\/strong> ist wirksam, aber anspruchsvoll, weil WordPress und viele Plugins Inline-Code verwenden. Starten Sie mit <code>Content-Security-Policy-Report-Only<\/code> und werten Sie die Meldungen in der Browser-Konsole aus, bevor Sie die Richtlinie scharf stellen.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Server-Banner und TRACE<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Zeigt der Server seine Software und Version an, erleichtert das gezielte Angriffe. Je nach Tarif l\u00e4sst sich das selbst abstellen oder nicht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ServerTokens Prod\nServerSignature Off\nTraceEnable Off<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Diese Apache-Einstellungen geh\u00f6ren in die Server-Konfiguration. Auf Shared Hosting wenden Sie sich daf\u00fcr an den Support. In der <code>php.ini<\/code> verhindert <code>expose_php = Off<\/code>, dass PHP seine Version preisgibt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">TLS-Versionen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Protokolle TLS 1.0 und 1.1 gelten als veraltet. Aktiv sein sollten TLS 1.2 und 1.3. Das stellt in der Regel der Hoster ein. Fragen Sie im Support nach und achten Sie darauf, dass das Zertifikat automatisch erneuert wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">WordPress-spezifische H\u00e4rtung<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Der CMS-Check pr\u00fcft typische Angriffsfl\u00e4chen von WordPress. Im Beispiel waren vier davon relevant.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Login-Route absichern.<\/strong> Aktivieren Sie Zwei-Faktor-Authentifizierung f\u00fcr alle Konten mit Schreibrechten, begrenzen Sie Anmeldeversuche und beschr\u00e4nken Sie den Zugriff auf <code>\/wp-admin<\/code> nach M\u00f6glichkeit auf bekannte IP-Adressen oder eine zus\u00e4tzliche Passwortabfrage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Versionsinformationen verbergen.<\/strong> L\u00f6schen Sie <code>readme.html<\/code>, oder sperren Sie die Datei, denn WordPress legt sie bei Updates neu an:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Files readme.html&gt;\nRequire all denied\n&lt;\/Files&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Benutzerliste sch\u00fctzen.<\/strong> Verhindern Sie, dass Besucher \u00fcber die REST-API alle Benutzernamen abrufen k\u00f6nnen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>add_filter('rest_endpoints', function ($endpoints) {\n    if (!is_user_logged_in()) {\n        unset($endpoints&#91;'\/wp\/v2\/users']);\n        unset($endpoints&#91;'\/wp\/v2\/users\/(?P&lt;id&gt;&#91;\\d]+)']);\n    }\n    return $endpoints;\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pr\u00fcfen Sie vorher, ob ein Plugin oder eine App diesen Endpunkt tats\u00e4chlich ben\u00f6tigt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Unn\u00f6tige Schnittstellen und Editoren schlie\u00dfen.<\/strong> Wird XML-RPC nicht gebraucht, l\u00e4sst es sich sperren. Den Datei-Editor im Backend schalten Sie in der <code>wp-config.php<\/code> ab:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;Files xmlrpc.php&gt;\nRequire all denied\n&lt;\/Files&gt;<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>define('DISALLOW_FILE_EDIT', true);<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Kontaktformular absichern<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ohne CSRF-Schutz lassen sich Formulare missbrauchen. Die meisten Formular-Plugins bieten diesen Schutz nach einem Update ab Werk. Bei selbst gebauten Formularen erg\u00e4nzen Sie in WordPress ein Nonce:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;form method=\"post\"&gt;\n    &lt;?php wp_nonce_field('kontakt_senden', 'kontakt_nonce'); ?&gt;\n    &lt;label for=\"nachricht\"&gt;Nachricht&lt;\/label&gt;\n    &lt;textarea id=\"nachricht\" name=\"nachricht\"&gt;&lt;\/textarea&gt;\n    &lt;button type=\"submit\"&gt;Senden&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Und pr\u00fcfen es beim Absenden serverseitig:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (!isset($_POST&#91;'kontakt_nonce']) || !wp_verify_nonce($_POST&#91;'kontakt_nonce'], 'kontakt_senden')) {\n    wp_die('Ung\u00fcltige Anfrage.');\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Erg\u00e4nzend geh\u00f6ren Eingabevalidierung auf dem Server und ein Spam-Schutz (etwa ein unsichtbares Feld oder ein Zeitlimit) zu einem soliden Formular.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">XSS-Risiko im JavaScript beseitigen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wird Nutzereingabe ungepr\u00fcft per <code>innerHTML<\/code> in die Seite geschrieben, kann Schadcode eingeschleust werden. Schlecht:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ausgabe.innerHTML = eingabe;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Besser, wenn nur Text angezeigt werden soll:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ausgabe.textContent = eingabe;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Muss echtes HTML ausgegeben werden, bereinigen Sie es vorher mit einer gepr\u00fcften Bibliothek wie DOMPurify und validieren die Eingabe zus\u00e4tzlich auf dem Server.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cookies und Speicher bereinigen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Session-Tokens oder E-Mail-Adressen geh\u00f6ren nicht in den LocalStorage, weil jedes eingebundene Skript sie auslesen kann. Sitzungsdaten setzen Sie besser als Cookie mit Schutzattributen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>setcookie('sitzung', $wert, &#91;\n    'expires' =&gt; 0,\n    'path' =&gt; '\/',\n    'secure' =&gt; true,\n    'httponly' =&gt; true,\n    'samesite' =&gt; 'Lax',\n]);<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Kontaktweg f\u00fcr Sicherheitsmeldungen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eine <code>security.txt<\/code> zeigt Sicherheitsforschern, wohin sie eine entdeckte L\u00fccke melden k\u00f6nnen. Legen Sie die Datei unter <code>\/.well-known\/security.txt<\/code> ab:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Contact: mailto:sicherheit@beispiel-betrieb.de\nExpires: 2027-09-30T23:59:59.000Z\nPreferred-Languages: de, en\nCanonical: https:\/\/www.beispiel-betrieb.de\/.well-known\/security.txt<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>Contact<\/code> und <code>Expires<\/code> sind Pflichtfelder nach RFC 9116. Das Ablaufdatum sollte nicht mehr als ein Jahr in der Zukunft liegen und regelm\u00e4\u00dfig erneuert werden. Fehlt die Datei, liefert der Bericht des Security Checks eine fertige Vorlage.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"534\" src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1-1024x534.png\" alt=\"Ablauf: Pr\u00fcfen, Priorisieren, Beheben, Dokumentieren, Erneut pr\u00fcfen\" class=\"wp-image-5638\" srcset=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1-1024x534.png 1024w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1-300x157.png 300w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1-768x401.png 768w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1-1536x801.png 1536w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1-2048x1069.png 2048w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1-640x334.png 640w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">F\u00fcnf Schritte vom Scan zum Ergebnis.<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 4: Fortschritt dokumentieren<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Gerade wenn mehrere Personen beteiligt sind, etwa Gesch\u00e4ftsf\u00fchrung, Agentur und Hoster, ist \u00dcbersicht wichtig. Im Bericht des Security Checks l\u00e4sst sich jeder Befund direkt mit einem Status versehen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Erledigt:<\/strong> Die Ma\u00dfnahme wurde umgesetzt<\/li>\n\n\n\n<li><strong>Nicht relevant:<\/strong> Der Befund trifft auf diesen Fall nicht zu<\/li>\n\n\n\n<li><strong>Zur\u00fcckgestellt:<\/strong> Wird sp\u00e4ter bearbeitet<\/li>\n\n\n\n<li><strong>Ignoriert:<\/strong> Bewusst ausgeblendet, etwa bei einer bekannten, akzeptierten Einschr\u00e4nkung<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Zu jedem Status k\u00f6nnen Sie einen Kommentar hinterlegen, zum Beispiel eine Ticketnummer, eine Begr\u00fcndung oder den Namen des Verantwortlichen. Die Angaben sind f\u00fcr alle Bearbeiter des Berichts sichtbar, sodass jeder auf demselben Stand arbeitet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aus den bearbeiteten Befunden l\u00e4sst sich zus\u00e4tzlich ein Abschlussbericht als Management Summary erstellen. Er zeigt, was erledigt und was noch offen ist, bewertet das verbleibende Restrisiko und l\u00e4sst sich als PDF exportieren. Das ist ein brauchbarer Nachweis gegen\u00fcber Auftraggebern, Datenschutzbeauftragten oder Revisoren.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Schritt 5: Erneut pr\u00fcfen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Erst der Re-Check zeigt, ob die Ma\u00dfnahmen wirklich wirken. Das ist der Moment, in dem sich M\u00fche und Ergebnis vergleichen lassen. Ein gesetzter Header kann falsch ausgeliefert werden, ein Update ein anderes Problem \u00f6ffnen, ein DNS-Eintrag noch nicht \u00fcbernommen sein.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Warten Sie nach DNS-\u00c4nderungen etwas ab, bis die Eintr\u00e4ge weltweit verbreitet sind, und leeren Sie bei Bedarf den Cache der Website. Starten Sie den Re-Check dann innerhalb des Zeitfensters von 30 Tagen, das der Pro-Check abdeckt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Im Beispiel sieht das Ergebnis so aus:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Bereich<\/th><th>Vorher<\/th><th>Nachher<\/th><\/tr><\/thead><tbody><tr><td>Gesamtrisiko<\/td><td>D<\/td><td>B<\/td><\/tr><tr><td>SSL\/TLS<\/td><td>C+<\/td><td>A<\/td><\/tr><tr><td>HTTP-Header<\/td><td>F<\/td><td>B<\/td><\/tr><tr><td>DNS und E-Mail<\/td><td>B<\/td><td>A<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Und der Status der 20 Befunde in der Befundverwaltung:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Status<\/th><th>Anzahl<\/th><\/tr><\/thead><tbody><tr><td>Erledigt<\/td><td>14<\/td><\/tr><tr><td>Nicht relevant<\/td><td>2<\/td><\/tr><tr><td>Zur\u00fcckgestellt<\/td><td>3<\/td><\/tr><tr><td>Bewusst ignoriert<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Die drei zur\u00fcckgestellten Punkte sind typisch: die scharf gestellte Content-Security-Policy, die erst ausgiebig getestet werden muss, ein Hosting-Thema, das der Anbieter umsetzen muss, und die Einf\u00fchrung der Zwei-Faktor-Anmeldung f\u00fcr alle Redakteure. Das ist in Ordnung, solange sie dokumentiert sind und einen Termin haben. Das Restrisiko ist deutlich gesunken, aber nicht null. Und auch nach dem Re-Check bleibt Sicherheit ein laufender Prozess.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"757\" src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/sechs_erkenntnisse_vorher_nachher-1024x757.png\" alt=\"Sechs Erkenntnisse aus dem Beispiel in sechs Kacheln: Messen vor Handeln, Reihenfolge z\u00e4hlt, Backup ist Pflicht, Hoster einbinden, Dokumentieren, Regelm\u00e4\u00dfig pr\u00fcfen. Zusammenfassung: Erst messen, dann gezielt handeln, dann belegen.\" class=\"wp-image-5642\" srcset=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/sechs_erkenntnisse_vorher_nachher-1024x757.png 1024w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/sechs_erkenntnisse_vorher_nachher-300x222.png 300w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/sechs_erkenntnisse_vorher_nachher-768x568.png 768w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/sechs_erkenntnisse_vorher_nachher-1536x1135.png 1536w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/sechs_erkenntnisse_vorher_nachher-2048x1514.png 2048w, https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/sechs_erkenntnisse_vorher_nachher-640x473.png 640w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Sechs Erkenntnisse: Messen vor Handeln, Reihenfolge z\u00e4hlt, Backup ist Pflicht, Hoster einbinden, Dokumentieren, Regelm\u00e4\u00dfig pr\u00fcfen<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Was Sie aus dem Beispiel mitnehmen k\u00f6nnen<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Messen vor Handeln.<\/strong> Ohne Ausgangswert bleibt jede Verbesserung eine Behauptung.<\/li>\n\n\n\n<li><strong>Reihenfolge schl\u00e4gt Perfektion.<\/strong> Kritische Befunde und schnelle Erfolge zuerst bringen den gr\u00f6\u00dften Gewinn.<\/li>\n\n\n\n<li><strong>Backup ist keine K\u00fcr.<\/strong> Jede \u00c4nderung am Live-System braucht einen R\u00fcckweg.<\/li>\n\n\n\n<li><strong>Der Hoster geh\u00f6rt dazu.<\/strong> Viele Punkte lassen sich nur gemeinsam mit dem Anbieter l\u00f6sen. Wer die Befunde mit Erkl\u00e4rung ans Support-Ticket h\u00e4ngt, kommt schneller zum Ziel.<\/li>\n\n\n\n<li><strong>Dokumentieren zahlt sich aus.<\/strong> Wer Status und Kommentare pflegt, kann sp\u00e4ter belegen, was wann gemacht wurde.<\/li>\n\n\n\n<li><strong>Regelm\u00e4\u00dfig wiederholen.<\/strong> Neue Plugins, Updates und Konfigurations\u00e4nderungen bringen neue Risiken. Planen Sie die Pr\u00fcfung als festen Termin ein, etwa halbj\u00e4hrlich und nach gr\u00f6\u00dferen \u00c4nderungen.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">H\u00e4ufige Fragen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Kann der Scan meine Website st\u00f6ren?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nein, der Scan arbeitet mit geringer Last und \u00e4ndert nichts an Ihrer Website. Er ist so ausgelegt, dass der laufende Betrieb nicht beeintr\u00e4chtigt wird.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Muss ich nach jeder \u00c4nderung neu pr\u00fcfen?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nicht nach jeder einzelnen. Sinnvoller ist es, einen Block von Ma\u00dfnahmen umzusetzen und dann zu pr\u00fcfen. Bei riskanteren \u00c4nderungen, etwa an der Serverkonfiguration, kontrollieren Sie zwischendurch im Browser, ob die Seite noch einwandfrei funktioniert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ersetzt der Security Check einen Penetrationstest?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nein. Er ist eine automatisierte Au\u00dfenpr\u00fcfung, die bekannte Schwachstellen und Fehlkonfigurationen zuverl\u00e4ssig findet. Ein Penetrationstest geht tiefer, pr\u00fcft Logik und Berechtigungen und ist ein anderes Werkzeug mit anderem Aufwand.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ist das auch ein DSGVO-Check?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nein. Der Security Check enth\u00e4lt zwar einen Cookie-Scan und eine Basispr\u00fcfung der Datenschutzhinweise, ist aber auf Sicherheit ausgerichtet. F\u00fcr eine vollst\u00e4ndige datenschutzrechtliche Pr\u00fcfung gibt es die <a href=\"https:\/\/wwwschutz.de\/loesungsfinder.html\">DSGVO-Website-Checks<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wird auch die Barrierefreiheit gepr\u00fcft?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Optional ja. Der Barrierefreiheits-Check ist Teil des Pakets und pr\u00fcft unter anderem Kontraste, Alternativtexte und Tastaturbedienung. Mehr dazu finden Sie auf der Seite zum <a href=\"https:\/\/wwwschutz.de\/accessibility-check.html\">Barrierefreiheits-Check<\/a>. Automatische Tests decken allerdings nur einen Teil der Kriterien ab und ersetzen keine manuelle Pr\u00fcfung.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wann sollte ich Fachleute hinzuziehen?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie nicht sicher sind, wie ein Befund zu beheben ist, wenn die \u00c4nderung Server oder Datenbank betrifft oder wenn Sie bereits Anzeichen f\u00fcr eine Kompromittierung sehen, etwa unbekannte Administratoren, fremde Dateien oder Spam-Versand. Dann z\u00e4hlt schnelle, fachkundige Hilfe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ein Vorher-Nachher-Vergleich macht aus einem diffusen Sicherheitsgef\u00fchl einen nachvollziehbaren Prozess: pr\u00fcfen, die wichtigsten Befunde beheben, dokumentieren und erneut pr\u00fcfen. Wer so vorgeht, schlie\u00dft nicht nur L\u00fccken, sondern kann auch zeigen, dass er es getan hat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn Sie wissen m\u00f6chten, wo Ihre eigene Website steht, dann ist der <a href=\"https:\/\/wwwschutz.de\/security-checks.html\">Website Security Check<\/a> ein guter Ausgangspunkt. Der <a href=\"https:\/\/wwwschutz.de\/securitybericht\">Beispielbericht<\/a> illustriert, wie ein Bericht aufgebaut ist.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Web Security kann Dank Automatisierung mit vern\u00fcnftigem Aufwand geleistet werden - wichtiger denn je in Zeiten, wo Angreifer auch KI zum Finden von Schwachstellen einsetzen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wie sicher ist Ihr Webhosting wirklich? Ein Beispiel zeigt Schritt f\u00fcr Schritt, wie Sie pr\u00fcfen, Befunde beheben und den Erfolg mit einem Re-Check belegen.<\/p>\n","protected":false},"author":4,"featured_media":5632,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[90],"tags":[],"class_list":["post-5630","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-security","entry"],"blocks":"<!-- wp:paragraph -->\n<p>\u201eBei uns ist noch nie etwas passiert\u201c ist kein Sicherheitskonzept. Die meisten Angriffe auf Websites nutzen keine exotischen Tricks, sondern bekannte, vermeidbare Schwachstellen: veraltete Software, fehlende Schutzeinstellungen beim Hosting, offene Standardrouten. Das T\u00fcckische daran: Man sieht sie nicht, solange man nicht gezielt nachschaut.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:html -->\n<div class=\"wsb-anim\" id=\"wsb-anim\">\n<canvas class=\"wsb-anim__canvas\" width=\"1600\" height=\"900\" role=\"img\" aria-label=\"Animation zu Web Security: Website pr\u00fcfen, L\u00fccken beheben, erneut pr\u00fcfen\"><\/canvas>\n<button class=\"wsb-anim__btn\" type=\"button\" aria-pressed=\"false\">Pause<\/button>\n<\/div>\n<style>\n#wsb-anim.wsb-anim{position:relative;display:block;width:100%;max-width:1000px;margin:0 auto;padding:0;aspect-ratio:16\/9;overflow:hidden;border-radius:14px;background:#f8f4ec;box-shadow:0 6px 24px rgba(30,45,70,.12);box-sizing:border-box;line-height:1}\n#wsb-anim .wsb-anim__canvas{display:block;width:100%;height:100%;max-width:none;margin:0;padding:0;border:0}\n#wsb-anim .wsb-anim__btn{position:absolute;top:10px;right:10px;margin:0;padding:6px 12px;border:1px solid rgba(28,52,90,.25);border-radius:999px;background:rgba(255,255,255,.88);color:#1c345a;font:600 12px\/1.2 system-ui,-apple-system,\"Segoe UI\",Arial,sans-serif;text-transform:none;letter-spacing:0;box-shadow:none;cursor:pointer;opacity:.7;transition:opacity .2s}\n#wsb-anim .wsb-anim__btn:hover,#wsb-anim .wsb-anim__btn:focus-visible{opacity:1;outline:2px solid #2b6cb0;outline-offset:2px}\n@supports not (aspect-ratio:16\/9){#wsb-anim.wsb-anim{height:0;padding-top:56.25%}#wsb-anim .wsb-anim__canvas{position:absolute;top:0;left:0}}\n<\/style>\n<script>\n(function(){\nvar root=document.getElementById(\"wsb-anim\");\nif(!root){return;}\nif(root.getAttribute(\"data-init\")){return;}\nroot.setAttribute(\"data-init\",\"1\");\nvar cv=root.querySelector(\"canvas\"),btn=root.querySelector(\"button\"),ctx=cv.getContext(\"2d\");\nvar W=1600,H=900,PI=Math.PI,TAU=PI*2;\nvar FONT='\"Segoe UI\",system-ui,-apple-system,\"Helvetica Neue\",Arial,sans-serif';\nvar paint=document.createElement(\"canvas\");paint.width=W;paint.height=H;\nvar pg=paint.getContext(\"2d\");\nvar paper=document.createElement(\"canvas\");paper.width=W;paper.height=H;\nvar C={navy:[214,55,26],blue:[208,68,44],sky:[198,70,86],light:[202,62,76],red:[2,70,50],rose:[2,75,86],green:[146,52,36],mint:[140,48,78],gold:[40,88,56],grey:[215,14,72]};\nvar TX={navy:\"#1c345a\",red:\"#b8322a\",green:\"#1f7a4a\",slate:\"#4a5668\",blue:\"#24609e\"};\nvar S=[],T=[],CL=[],LOOP=60,clock=0,last=0,cix=0,user=false,vis=true,raf=0;\nfunction rnd(a,b){return a+Math.random()*(b-a);}\nfunction dist(a,b){var dx=b[0]-a[0],dy=b[1]-a[1];return Math.sqrt(dx*dx+dy*dy);}\nfunction makePaper(){\nvar g=paper.getContext(\"2d\"),i,x,y,a,vg;\ng.fillStyle=\"#f8f4ec\";g.fillRect(0,0,W,H);\nfor(i=0;i<12000;i++){x=Math.random()*W;y=Math.random()*H;a=Math.random()*0.06;g.fillStyle=Math.random()<0.55?\"rgba(110,90,60,\"+a+\")\":\"rgba(255,255,255,\"+(a*3)+\")\";g.fillRect(x,y,rnd(1,2.5),rnd(1,2.5));}\ng.lineWidth=1;\nfor(i=0;i<320;i++){x=Math.random()*W;y=Math.random()*H;g.strokeStyle=\"rgba(120,100,70,\"+rnd(0.03,0.07)+\")\";g.beginPath();g.moveTo(x,y);g.quadraticCurveTo(x+rnd(-20,20),y+rnd(-20,20),x+rnd(-40,40),y+rnd(-40,40));g.stroke();}\nvg=g.createRadialGradient(W\/2,H\/2,H*0.35,W\/2,H\/2,W*0.65);\nvg.addColorStop(0,\"rgba(255,255,255,0)\");vg.addColorStop(1,\"rgba(150,125,90,0.18)\");\ng.fillStyle=vg;g.fillRect(0,0,W,H);\n}\nfunction pts(fn,len){var n=Math.max(6,Math.ceil(len\/3)),a=[],i;for(i=0;i<=n;i++){a.push(fn(i\/n));}return a;}\nfunction line(x1,y1,x2,y2,wob){\nvar dx=x2-x1,dy=y2-y1,L=Math.sqrt(dx*dx+dy*dy)||1,nx=-dy\/L,ny=dx\/L,ph=rnd(0,TAU),w=wob===undefined?Math.min(L*0.025,10):wob;\nreturn pts(function(t){var o=Math.sin(t*PI)*w*Math.sin(ph)+Math.sin(t*8+ph)*w*0.2;return [x1+dx*t+nx*o,y1+dy*t+ny*o];},L);\n}\nfunction arc(cx,cy,r,a0,a1,wob){\nvar ph=rnd(0,TAU),w=wob===undefined?r*0.03:wob;\nreturn pts(function(t){var a=a0+(a1-a0)*t,rr=r+Math.sin(t*6+ph)*w;return [cx+Math.cos(a)*rr,cy+Math.sin(a)*rr];},Math.abs(a1-a0)*r);\n}\nfunction bez(p0,p1,p2,p3){\nreturn pts(function(t){var u=1-t,a=u*u*u,b=3*u*u*t,c=3*u*t*t,d=t*t*t;return [a*p0[0]+b*p1[0]+c*p2[0]+d*p3[0],a*p0[1]+b*p1[1]+c*p2[1]+d*p3[1]];},dist(p0,p1)+dist(p1,p2)+dist(p2,p3));\n}\nfunction join(list){var out=[],i;for(i=0;i<list.length;i++){out=out.concat(i?list[i].slice(1):list[i]);}return out;}\nfunction poly(p){var segs=[],i;for(i=1;i<p.length;i++){segs.push(line(p[i-1][0],p[i-1][1],p[i][0],p[i][1],2));}return join(segs);}\nfunction Stroke(o){\nvar p=o.p,n=p.length,i,k,cnt,a,b,dx,dy,L;\nthis.p=p;this.w=o.w;this.c=o.c||C.navy;this.t0=o.t;this.d=o.d||0.6;this.er=o.er?1:0;this.al=o.a===undefined?0.92:o.a;this.done=0;\nthis.spl=this.er?0:(o.spl===undefined?1:o.spl);\nthis.nm=[];\nfor(i=0;i<n;i++){a=p[Math.max(0,i-1)];b=p[Math.min(n-1,i+1)];dx=b[0]-a[0];dy=b[1]-a[1];L=Math.sqrt(dx*dx+dy*dy)||1;this.nm.push([-dy\/L,dx\/L]);}\ncnt=Math.max(5,Math.min(64,Math.round(o.w*0.8)));\nthis.br=[];\nfor(k=0;k<cnt;k++){this.br.push({o:(k\/(cnt-1)-0.5)+(this.er?0:rnd(-0.04,0.04)),lw:this.er?o.w\/cnt*3:o.w\/cnt*rnd(1.3,2.8),dl:rnd(-9,9),da:this.er?1:rnd(0.45,1),dry:this.er?2:rnd(0.72,1.05),j:rnd(0,TAU)});}\n}\nStroke.prototype.splat=function(g,p){\nvar c=this.c,m=Math.round(rnd(2,6)),i,r,a,d;\nfor(i=0;i<m;i++){a=rnd(0,TAU);d=rnd(this.w*0.4,this.w*1.3);r=rnd(1,Math.max(2,this.w*0.08));g.fillStyle=\"hsla(\"+c[0]+\",\"+c[1]+\"%,\"+c[2]+\"%,\"+(rnd(0.3,0.8)*this.al)+\")\";g.beginPath();g.arc(p[0]+Math.cos(a)*d,p[1]+Math.sin(a)*d,r,0,TAU);g.fill();}\n};\nStroke.prototype.up=function(g,t){\nvar q=(t-this.t0)\/this.d,e,n,to,from,k,i,b,pr,x,y,tp,al,c=this.c;\nif(q<=0){return;}\nif(q>1){q=1;}\ne=q<0.5?2*q*q:1-Math.pow(-2*q+2,2)\/2;\nn=this.p.length-1;to=Math.round(e*n);from=this.done;\nif(to<=from){return;}\ng.save();\ng.globalCompositeOperation=this.er?\"destination-out\":\"source-over\";\ng.lineCap=\"round\";g.lineJoin=\"round\";\nfor(k=0;k<this.br.length;k++){\nb=this.br[k];\ntp=(from+to)\/2\/n;\nal=b.da*this.al;\nif(tp>b.dry){al=al*Math.max(0,1-(tp-b.dry)*5);}\nif(al<=0.01){continue;}\ng.strokeStyle=this.er?\"rgba(0,0,0,\"+al+\")\":\"hsla(\"+c[0]+\",\"+c[1]+\"%,\"+Math.max(5,Math.min(97,c[2]+b.dl))+\"%,\"+al+\")\";\ng.lineWidth=b.lw;\ng.beginPath();\nfor(i=from;i<=to;i++){\ntp=i\/n;\npr=this.er?1:Math.min(1,0.35+tp*7,0.25+(1-tp)*5);\nx=this.p[i][0]+this.nm[i][0]*b.o*this.w*pr+Math.sin(i*0.7+b.j)*0.6;\ny=this.p[i][1]+this.nm[i][1]*b.o*this.w*pr+Math.cos(i*0.6+b.j)*0.6;\nif(i===from){g.moveTo(x,y);}else{g.lineTo(x,y);}\n}\ng.stroke();\n}\nif(this.spl){if(from===0){this.splat(g,this.p[0]);}if(to===n){this.splat(g,this.p[n]);}}\ng.restore();\nthis.done=to;\n};\nfunction st(p,w,c,t,d,o){o=o||{};o.p=p;o.w=w;o.c=c;o.t=t;o.d=d;S.push(new Stroke(o));return p;}\nfunction er(p,w,t,d){S.push(new Stroke({p:p,w:w,t:t,d:d,er:1}));}\nfunction tx(s,x,y,sz,col,t0,t1,o){o=o||{};T.push({s:s,x:x,y:y,sz:sz,c:col,t0:t0,t1:t1,al:o.al||\"center\",wt:o.wt||\"700\"});}\nfunction wipe(t0){var y,i=0,r;for(y=-10;y<=H+60;y+=125){r=i%2===0;er(r?line(-120,y,W+120,y+rnd(-30,30),14):line(W+120,y,-120,y+rnd(-30,30),14),240,t0+i*0.13,0.55);i++;}CL.push(t0+i*0.13+0.6);return t0+i*0.13+0.75;}\nfunction arrow(x1,y1,x2,y2,w,c,t){\nvar a=Math.atan2(y2-y1,x2-x1),h=w*3.2,ps=[];\nps.push(st(line(x1,y1,x2,y2),w,c,t,0.5));\nps.push(st(line(x2,y2,x2-Math.cos(a-0.5)*h,y2-Math.sin(a-0.5)*h,2),w*0.85,c,t+0.45,0.18));\nps.push(st(line(x2,y2,x2-Math.cos(a+0.5)*h,y2-Math.sin(a+0.5)*h,2),w*0.85,c,t+0.55,0.18));\nreturn ps;\n}\nfunction build(){\nvar t,i,k,y,T2,U,V,X,Y,A,F,R,sR,sL,ar=[],mg=[],cc=[],fx=[\"Updates eingespielt\",\"Login abgesichert\",\"Header gesetzt\",\"DMARC aktiv\"];\nS=[];T=[];CL=[];\nst(line(120,430,1480,455,18),230,C.sky,0.2,1.6,{a:0.6});\nst(line(180,525,1430,500,16),150,C.light,0.9,1.4,{a:0.45});\nst(line(260,250,420,226),38,C.red,2.9,0.35,{a:0.85});\nst(line(1190,668,1350,640),38,C.green,3.2,0.35,{a:0.85});\nst(line(430,590,1170,578,6),20,C.navy,2.3,0.9);\ntx(\"Web Security\",800,450,132,TX.navy,1.3,8.4);\ntx(\"Ein Vorher-Nachher-Beispiel\",800,300,34,TX.slate,3.5,8.4,{wt:\"600\"});\ntx(\"Pr\u00fcfen. Beheben. Erneut pr\u00fcfen.\",800,655,44,TX.blue,2.8,8.4,{wt:\"600\"});\nt=wipe(8.1);\nT2=t;\ntx(\"Ihre Website \u2013 von au\u00dfen betrachtet\",800,95,52,TX.navy,T2+0.2,T2+8.3);\nst(line(450,230,1150,233,3),12,C.navy,T2+0.3,0.5);\nst(line(1150,233,1147,720,3),12,C.navy,T2+0.7,0.5);\nst(line(1147,720,452,717,3),12,C.navy,T2+1.1,0.5);\nst(line(452,717,450,230,3),12,C.navy,T2+1.5,0.5);\nst(line(464,262,1136,262,3),48,C.grey,T2+1.9,0.6,{a:0.85,spl:0});\nst(line(484,262,494,262,1),18,C.red,T2+2.4,0.12,{spl:0});\nst(line(514,262,524,262,1),18,C.gold,T2+2.5,0.12,{spl:0});\nst(line(544,262,554,262,1),18,C.green,T2+2.6,0.12,{spl:0});\nst(line(500,342,1100,346,6),84,C.light,T2+2.7,0.7,{a:0.8});\nst(line(520,352,1080,336,6),46,C.sky,T2+3.0,0.6,{a:0.7,spl:0});\nst(line(500,430,1010,431,3),14,C.grey,T2+3.3,0.4,{spl:0});\nst(line(500,470,1090,468,3),14,C.grey,T2+3.5,0.4,{spl:0});\nst(line(500,510,880,511,3),14,C.grey,T2+3.7,0.4,{spl:0});\nst(line(505,622,780,620,4),110,C.sky,T2+3.9,0.5,{a:0.7,spl:0});\nst(line(820,620,1095,623,4),110,C.mint,T2+4.1,0.5,{a:0.65,spl:0});\nA=[[110,380,435,378,60,\"Veraltete Software\",\"left\"],[110,615,435,605,60,\"Offene Login-Route\",\"left\"],[1490,380,1165,400,1540,\"Fehlende Header\",\"right\"],[1490,615,1165,605,1540,\"Gef\u00e4lschte E-Mails\",\"right\"]];\nF=[[520,378],[520,600],[1080,400],[1080,600]];\nfor(i=0;i<4;i++){k=T2+4.6+i*0.55;ar=ar.concat(arrow(A[i][0],A[i][1],A[i][2],A[i][3],14,C.red,k));tx(A[i][5],A[i][4],A[i][1]-52,30,TX.red,k,T2+8.3,{al:A[i][6]});}\ntx(\"Unsichtbar \u2013 bis man gezielt nachschaut.\",800,820,38,TX.slate,T2+6.6,T2+8.4,{wt:\"600\"});\nU=T2+8.6;\ntx(\"Schritt 1: Pr\u00fcfen\",800,95,56,TX.navy,U,U+7.4);\ntx(\"Von au\u00dfen \u2013 so, wie es auch ein Angreifer tut.\",800,152,28,TX.slate,U+0.4,U+7.4,{wt:\"500\"});\nmg.push([st(arc(800,470,60,0,TAU,4),105,C.sky,U+0.4,0.6,{a:0.35,spl:0}),105]);\nmg.push([st(arc(800,470,115,-PI\/2,TAU-PI\/2+0.25,3),18,C.navy,U+0.8,1.0),18]);\nmg.push([st(line(884,554,1005,675,4),34,C.navy,U+1.7,0.45),34]);\nfor(i=0;i<4;i++){k=U+2.3+i*0.45;cc.push(st(arc(F[i][0],F[i][1],42,-0.5,TAU+0.2,2),9,C.red,k,0.5,{spl:0}));tx(i<2?\"Kritisch\":\"Hoch\",A[i][4],A[i][1]-52,30,TX.red,k,U+7.4,{al:A[i][6]});}\ntx(\"20 Befunde \u2013 sortiert nach Kritikalit\u00e4t\",800,820,38,TX.slate,U+3.6,U+7.5,{wt:\"600\"});\nV=U+7.8;\ntx(\"Schritt 2: Beheben\",800,95,56,TX.navy,V,V+7.8);\ntx(\"Mit Backup \u2013 eine \u00c4nderung nach der anderen.\",800,152,28,TX.slate,V+0.4,V+7.8,{wt:\"500\"});\nfor(i=0;i<ar.length;i++){er(ar[i],44,V+0.3+i*0.08,0.35);}\nfor(i=0;i<mg.length;i++){er(mg[i][0],mg[i][1]+26,V+0.9+i*0.15,0.5);}\nfor(i=0;i<cc.length;i++){er(cc[i],36,V+1.4+i*0.12,0.45);}\nk=V+2.0;\nsR=join([line(800,170,1250,222,4),bez([1250,222],[1270,690],[1150,815],[800,880])]);\nsL=join([line(800,170,350,222,4),bez([350,222],[330,690],[450,815],[800,880])]);\nst(sR,90,C.sky,k,1.2,{a:0.35,spl:0});st(sL,90,C.sky,k,1.2,{a:0.35,spl:0});\nst(sR,24,C.blue,k+0.2,1.3);st(sL,24,C.blue,k+0.2,1.3);\nfor(i=0;i<4;i++){k=V+3.6+i*0.45;st(poly([[F[i][0]-28,F[i][1]+2],[F[i][0]-6,F[i][1]+26],[F[i][0]+32,F[i][1]-28]]),17,C.green,k,0.45);tx(fx[i],A[i][4],A[i][1]-52,30,TX.green,k,V+7.8,{al:A[i][6]});}\nt=wipe(V+8.1);\nX=t+0.1;\ntx(\"Schritt 3: Erneut pr\u00fcfen\",800,95,56,TX.navy,X,X+8.6);\ntx(\"Der Re-Check zeigt, ob die Ma\u00dfnahmen wirklich wirken.\",800,152,28,TX.slate,X+0.4,X+8.6,{wt:\"500\"});\ntx(\"Gesamtrisiko\",470,320,34,TX.navy,X+0.6,X+8.6);\nst(arc(260,480,58,0,TAU,3),105,C.rose,X+0.6,0.6,{a:0.7,spl:0});\nst(arc(260,480,110,-PI\/2,TAU-PI\/2+0.3,3),16,C.red,X+0.9,0.8);\ntx(\"D\",260,486,130,TX.red,X+1.5,X+8.6);\ntx(\"Vorher\",260,640,32,TX.slate,X+1.5,X+8.6,{wt:\"600\"});\narrow(395,480,535,480,14,C.navy,X+2.1);\nst(arc(680,480,58,0,TAU,3),105,C.mint,X+2.6,0.6,{a:0.75,spl:0});\nst(arc(680,480,110,-PI\/2,TAU-PI\/2+0.3,3),16,C.green,X+2.9,0.8);\ntx(\"B\",680,486,130,TX.green,X+3.5,X+8.6);\ntx(\"Nachher\",680,640,32,TX.slate,X+3.5,X+8.6,{wt:\"600\"});\nR=[[\"Gesamtrisiko\",\"D\",\"B\",0.38,0.78],[\"SSL\/TLS\",\"C+\",\"A\",0.6,1],[\"HTTP-Header\",\"F\",\"B\",0.16,0.78],[\"DNS und E-Mail\",\"B\",\"A\",0.78,1]];\nfor(i=0;i<4;i++){y=300+i*125;k=X+4.0+i*0.5;tx(R[i][0]+\":  \"+R[i][1]+\"  \u2192  \"+R[i][2],905,y-40,28,TX.navy,k,X+8.6,{al:\"left\",wt:\"600\"});st(line(905,y,905+540*R[i][3],y,3),22,C.grey,k+0.1,0.35,{spl:0});st(line(905,y+30,905+540*R[i][4],y+30,3),22,C.green,k+0.35,0.45,{spl:0});}\nst(line(905,790,945,790,1),20,C.grey,X+4.0,0.2,{spl:0});\ntx(\"Vorher\",960,790,24,TX.slate,X+4.0,X+8.6,{al:\"left\",wt:\"600\"});\nst(line(1080,790,1120,790,1),20,C.green,X+4.2,0.2,{spl:0});\ntx(\"Nachher\",1135,790,24,TX.slate,X+4.2,X+8.6,{al:\"left\",wt:\"600\"});\ntx(\"14 erledigt \u00b7 3 zur\u00fcckgestellt \u00b7 2 nicht relevant \u00b7 1 ignoriert\",800,855,28,TX.slate,X+6.2,X+8.7,{wt:\"600\"});\nt=wipe(X+9.0);\nY=t+0.1;\ntx(\"Sicherheit ist ein Prozess.\",800,95,60,TX.navy,Y+0.3,Y+8.6);\nst(arc(800,500,110,0,TAU,6),150,C.sky,Y+0.2,1.2,{a:0.5,spl:0});\nst(arc(800,452,80,PI,TAU,3),26,C.navy,Y+0.9,0.6);\nfor(i=0;i<6;i++){st(line(690,470+i*38,910,468+i*38,3),46,C.gold,Y+1.5+i*0.13,0.28,{a:0.95,spl:0});}\nst(poly([[685,445],[915,447],[913,690],[687,688],[685,445]]),12,C.navy,Y+2.4,1.0,{spl:0});\nst(arc(800,538,10,0,TAU,1),16,C.navy,Y+3.4,0.25,{spl:0});\nst(line(800,548,800,600,1),16,C.navy,Y+3.6,0.25,{spl:0});\nst(poly([[960,560],[990,592],[1050,520]]),16,C.green,Y+3.9,0.4);\ntx(\"Pr\u00fcfen \u00b7 Beheben \u00b7 Dokumentieren \u00b7 Erneut pr\u00fcfen\",800,790,38,TX.blue,Y+4.2,Y+8.6,{wt:\"600\"});\ntx(\"Planen Sie die Pr\u00fcfung als festen Termin ein.\",800,850,30,TX.slate,Y+5.0,Y+8.6,{wt:\"500\"});\nt=wipe(Y+8.8);\nLOOP=t+0.3;\n}\nfunction drawText(o,t){\nvar a,r,tw,lx;\nif(t<o.t0){return;}\nif(t>o.t1){return;}\na=Math.max(0,Math.min(1,(t-o.t0)\/0.5,(o.t1-t)\/0.5));\nr=Math.min(1,(t-o.t0)\/0.9);\nr=1-Math.pow(1-r,3);\nctx.font=o.wt+\" \"+o.sz+\"px \"+FONT;\nctx.textAlign=o.al;ctx.textBaseline=\"middle\";\ntw=ctx.measureText(o.s).width;\nlx=o.al===\"center\"?o.x-tw\/2:(o.al===\"right\"?o.x-tw:o.x);\nctx.save();\nctx.beginPath();ctx.rect(lx-20,o.y-o.sz,(tw+40)*r,o.sz*2);ctx.clip();\nctx.globalAlpha=a;\nctx.shadowColor=\"rgba(248,244,236,0.95)\";ctx.shadowBlur=10;\nctx.fillStyle=o.c;\nctx.fillText(o.s,o.x,o.y+(1-a)*8);\nctx.restore();\n}\nfunction reset(){clock=0;cix=0;pg.clearRect(0,0,W,H);build();}\nfunction step(dt){\nvar i;\nclock+=dt;\nif(clock>=LOOP){reset();}\nwhile(cix<CL.length){if(CL[cix]>clock){break;}pg.clearRect(0,0,W,H);cix++;}\nfor(i=0;i<S.length;i++){S[i].up(pg,clock);}\n}\nfunction draw(){\nvar i;\nctx.clearRect(0,0,W,H);\nctx.drawImage(paper,0,0);\nctx.drawImage(paint,0,0);\nfor(i=0;i<T.length;i++){drawText(T[i],clock);}\nctx.fillStyle=\"rgba(28,52,90,0.18)\";ctx.fillRect(0,H-6,W*clock\/LOOP,6);\n}\nfunction running(){return vis?!user:false;}\nfunction frame(now){\nvar dt=last?(now-last)\/1000:0;\nraf=0;last=now;\nif(dt>0.05){dt=0.05;}\nstep(dt);draw();schedule();\n}\nfunction schedule(){if(raf){return;}if(!running()){last=0;return;}raf=requestAnimationFrame(frame);}\nbtn.addEventListener(\"click\",function(){user=!user;btn.textContent=user?\"Abspielen\":\"Pause\";btn.setAttribute(\"aria-pressed\",user?\"true\":\"false\");schedule();});\nmakePaper();reset();\nif(window.matchMedia){if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches){user=true;while(clock<6.5){step(0.05);}draw();btn.textContent=\"Abspielen\";btn.setAttribute(\"aria-pressed\",\"true\");}}\nif(\"IntersectionObserver\" in window){new IntersectionObserver(function(en){vis=en[0].isIntersecting;schedule();},{threshold:0.05}).observe(root);}\ndraw();schedule();\n})();\n<\/script>\n<!-- \/wp:html -->\n\n<!-- wp:paragraph -->\n<p>Dieser Beitrag zeigt den ganzen Kreislauf an einem Beispiel: Ein Webhosting mit WordPress-Website wird gepr\u00fcft, die Befunde werden Schritt f\u00fcr Schritt behoben, anschlie\u00dfend wird erneut gepr\u00fcft. Dabei geht es nicht um Theorie, sondern um den praktischen Ablauf, den Sie auf Ihre eigene Website \u00fcbertragen k\u00f6nnen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:quote -->\n<blockquote class=\"wp-block-quote\"><!-- wp:paragraph -->\n<p><strong>Hinweis zum Beispiel:<\/strong> Die geschilderte Website ist ein Szenario. Die Ausgangsbefunde sind dem u.g. Security Checks nachempfunden und typisch f\u00fcr viele Websites auf Standard-Hosting. Alle Werte dienen der Veranschaulichung. Ihre eigenen Ergebnisse werden abweichen, und Sie sollten nur Websites pr\u00fcfen, f\u00fcr die Sie verantwortlich sind oder eine Erlaubnis haben.<\/p>\n<!-- \/wp:paragraph --><\/blockquote>\n<!-- \/wp:quote -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Das Wichtigste in K\u00fcrze<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Ein Vorher-Nachher-Vergleich macht Sicherheit messbar: Ohne Ausgangswert l\u00e4sst sich kein Fortschritt belegen.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Der Ablauf besteht aus f\u00fcnf Schritten: pr\u00fcfen, Bericht lesen und priorisieren, beheben, dokumentieren, erneut pr\u00fcfen.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Viele Befunde lassen sich in Minuten l\u00f6sen, etwa DNS-Eintr\u00e4ge und HTTP-Header. Andere brauchen den Hoster.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Ein Backup vor jeder \u00c4nderung ist Pflicht, \u00c4nderungen erfolgen nacheinander und nicht alle auf einmal.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Nach den Korrekturen best\u00e4tigt ein Re-Check, ob die Ma\u00dfnahmen wirklich wirken.<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Die Ausgangslage im Beispiel<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Unser Beispielbetrieb, nennen wir ihn \u201eBeispiel-Betrieb\u201c, betreibt unter <code>beispiel-betrieb.de<\/code> eine WordPress-Website auf einem klassischen Shared-Hosting-Tarif. Die Seite wurde vor Jahren eingerichtet, ein Dienstleister hat sie gelegentlich gepflegt, zuletzt aber vor l\u00e4ngerer Zeit. Es gibt ein Kontaktformular, einen Newsletter-Dienst und E-Mail-Postf\u00e4cher beim selben Anbieter.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Eine Frage steht im Raum: Wie sicher ist das eigentlich, und was genau sollte zuerst angepackt werden?<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":5633,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1024x534.png\" alt=\"F\u00fcnf Schritte vom ersten Scan bis zum Nachweis: Pr\u00fcfen, Priorisieren, Beheben, Dokumentieren und Erneut pr\u00fcfen. Ein gestrichelter Pfeil f\u00fchrt von Schritt f\u00fcnf zur\u00fcck zu Schritt zwei.\" class=\"wp-image-5633\"\/><figcaption class=\"wp-element-caption\">Vom Scan bis zum Ergebnis.<\/figcaption><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Schritt 1: Die erste Pr\u00fcfung<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>F\u00fcr die Bestandsaufnahme verwenden wir den <a href=\"https:\/\/wwwschutz.de\/security-checks.html\">Website Security Check<\/a>. Er pr\u00fcft eine Website von au\u00dfen, so wie es auch ein Angreifer tun w\u00fcrde, und fasst alles in einem Bericht zusammen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Was gepr\u00fcft wird<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>F\u00fcr ein Webhosting sind besonders diese Bereiche aufschlussreich:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Domain und DNS:<\/strong> SPF, DKIM, DMARC und weitere Eintr\u00e4ge, die vor gef\u00e4lschten E-Mails im Namen Ihrer Domain sch\u00fctzen<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Hosting und Infrastruktur:<\/strong> Provider, Mail-Server, CDN und Netzwerkzuordnung (ASN), einschlie\u00dflich einer Sicherheitsanalyse des Mail-Providers<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>SSL\/TLS:<\/strong> Zertifikat, unterst\u00fctzte Protokollversionen, Cipher-Suites und HSTS<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Web-Server-Antworten:<\/strong> Sicherheits-Header, aktive TRACE-Methode und verr\u00e4terische Server-Banner<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>CMS und Plugins:<\/strong> Erkennung von WordPress, TYPO3 und anderen Systemen sowie Abgleich mit bekannten Schwachstellen (CVE)<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>JavaScript und Formulare:<\/strong> Pr\u00fcfung auf XSS-Risiken und unsichere Formularverarbeitung<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Cookies und Speicher:<\/strong> Cookies, LocalStorage und SessionStorage auf sensible Inhalte<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>IP-Reputation:<\/strong> Blacklist- und Abuse-Eintr\u00e4ge, die auch dann auftreten k\u00f6nnen, wenn ein Nachbar auf demselben Server auff\u00e4llig wird<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>security.txt:<\/strong> Pr\u00fcfung, ob ein Kontaktweg f\u00fcr Sicherheitsmeldungen nach RFC 9116 vorhanden ist<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Der Scanner arbeitet regelbasiert. K\u00fcnstliche Intelligenz kommt laut Anbieter nur f\u00fcr die verst\u00e4ndliche Zusammenfassung einzelner Befunde zum Einsatz, die Diagnosen selbst stammen aus festen Pr\u00fcfroutinen.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Ablauf und Aufwand<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Der Ablauf ist bewusst einfach: URL eingeben, der Scan startet automatisch, am Ende kommt ein Link zum fertigen Bericht per E-Mail. Der Scan dauert in der Regel etwa 15 Minuten, arbeitet mit geringer Last und ver\u00e4ndert nichts an Ihrer Website.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Ein Punkt verdient Aufmerksamkeit: Der Standard-Scan enth\u00e4lt einen leichtgewichtigen Portscan, um die Backend-Infrastruktur zu erfassen. Wer das nicht m\u00f6chte, kann ihn bei der Bestellung abw\u00e4hlen und verliert dadurch nur die Pr\u00fcfung der Backend-Software und offener Ports. Alle \u00fcbrigen Bereiche bleiben unver\u00e4ndert.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>F\u00fcr den Vorher-Nachher-Vergleich bietet sich der Pro-Check an, denn er enth\u00e4lt Re-Checks innerhalb von 30 Tagen. Genau das brauchen wir in Schritt 5.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Schritt 2: Den Bericht lesen und priorisieren<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Der Bericht beginnt mit einer Gesamtbewertung und sortiert die Befunde nach Kritikalit\u00e4t. Jeder Befund enth\u00e4lt eine verst\u00e4ndliche Erkl\u00e4rung, die m\u00f6glichen Folgen und konkrete L\u00f6sungsschritte. Bei Schwachstellen (CVE) gibt es zus\u00e4tzlich eine Diagnose-Anleitung, mit der sich pr\u00fcfen l\u00e4sst, ob man tats\u00e4chlich betroffen ist.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Im Beispiel ergibt der erste Scan diese Ausgangsbewertung:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Bereich<\/th><th>Bewertung vorher<\/th><\/tr><\/thead><tbody><tr><td>Gesamtrisiko<\/td><td>D<\/td><\/tr><tr><td>SSL\/TLS<\/td><td>C+<\/td><\/tr><tr><td>HTTP-Header<\/td><td>F<\/td><\/tr><tr><td>DNS und E-Mail<\/td><td>B<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Insgesamt meldet der Bericht 20 Befunde, davon 8 mit globaler Wirkung (Infrastruktur, Server, DNS) und 12 seitenspezifische. Die zehn wichtigsten im \u00dcberblick:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Bereich<\/th><th>Befund<\/th><th>Schweregrad<\/th><\/tr><\/thead><tbody><tr><td>CMS<\/td><td>WordPress-Kern veraltet, bekannte Schwachstellen<\/td><td>Kritisch<\/td><\/tr><tr><td>CMS<\/td><td>Login-Route <code>\/wp-admin<\/code> ohne Zusatzschutz erreichbar<\/td><td>Kritisch<\/td><\/tr><tr><td>JavaScript<\/td><td>Unsichere <code>innerHTML<\/code>-Zuweisung auf der Kontaktseite (XSS-Risiko)<\/td><td>Kritisch<\/td><\/tr><tr><td>DNS<\/td><td>Keine DMARC-Richtlinie<\/td><td>Hoch<\/td><\/tr><tr><td>Formular<\/td><td>Kontaktformular ohne CSRF-Schutz<\/td><td>Hoch<\/td><\/tr><tr><td>CMS<\/td><td><code>readme.html<\/code> \u00f6ffentlich erreichbar, verr\u00e4t die Version<\/td><td>Hoch<\/td><\/tr><tr><td>CMS<\/td><td>Benutzerliste \u00fcber die REST-API auslesbar<\/td><td>Hoch<\/td><\/tr><tr><td>HTTP-Header<\/td><td>Wichtige Sicherheits-Header fehlen<\/td><td>Hoch<\/td><\/tr><tr><td>TLS<\/td><td>Veraltete Protokollversionen noch aktiv<\/td><td>Hoch<\/td><\/tr><tr><td>Cookies<\/td><td>Sensible Werte in Cookies und LocalStorage<\/td><td>Hoch<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Dazu kommen kleinere Punkte wie ein Server-Banner, das Software und Version verr\u00e4t, und eine fehlende <code>security.txt<\/code>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Falsch-positive Treffer vermeiden<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Erkennt der Scanner eine Softwareversion falsch, kann das zu unn\u00f6tigen Treffern f\u00fchren. Im Bericht l\u00e4sst sich die erkannte Version deshalb korrigieren oder erg\u00e4nzen. Die Angabe wird gespeichert und beim n\u00e4chsten Scan ber\u00fccksichtigt. Das verbessert die Qualit\u00e4t der Schwachstellenanalyse sp\u00fcrbar.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Die Reihenfolge festlegen<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Bei 20 Befunden hilft eine einfache Regel:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Zuerst ein vollst\u00e4ndiges Backup<\/strong> von Dateien und Datenbank, bei Bedarf zus\u00e4tzlich ein Test auf einer Staging-Kopie.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Dann die kritischen Befunde<\/strong>, weil sie am h\u00e4ufigsten ausgenutzt werden.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Danach die schnellen Erfolge:<\/strong> DNS-Eintr\u00e4ge, HTTP-Header, Datei-Bereinigung. Sie bringen viel Wirkung bei wenig Aufwand.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Der Rest wird geplant<\/strong>, etwa Rollout von Zwei-Faktor-Anmeldung oder strengere Richtlinien.<\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Wer kann was beheben?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nicht jeder Befund liegt in Ihrer Hand. Bei Shared Hosting entscheidet der Anbieter \u00fcber Serverdetails:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Befund<\/th><th>Selbst l\u00f6sbar?<\/th><th>Wo<\/th><\/tr><\/thead><tbody><tr><td>WordPress, Plugins, Themes aktualisieren<\/td><td>Ja<\/td><td>WordPress-Backend<\/td><\/tr><tr><td>PHP-Version anheben<\/td><td>Meist ja<\/td><td>Kundenmen\u00fc des Hosters<\/td><\/tr><tr><td>DNS-Eintr\u00e4ge (SPF, DMARC, DKIM)<\/td><td>Ja<\/td><td>DNS-Verwaltung beim Hoster oder Registrar<\/td><\/tr><tr><td>HTTP-Header, Weiterleitung auf HTTPS<\/td><td>Meist ja<\/td><td><code>.htaccess<\/code> oder Kundenmen\u00fc<\/td><\/tr><tr><td>TLS-Protokollversionen<\/td><td>Selten<\/td><td>Support des Hosters<\/td><\/tr><tr><td>Server-Banner, TRACE-Methode<\/td><td>Selten<\/td><td>Support des Hosters<\/td><\/tr><tr><td>Offene Ports, geteilte IP-Reputation<\/td><td>Nein<\/td><td>Support des Hosters<\/td><\/tr><tr><td>Formular- und JavaScript-Fehler<\/td><td>Ja<\/td><td>Theme, Plugin oder Entwickler<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Schritt 3: Die Probleme beheben<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Gehen wir die wichtigsten Befunde der Reihe nach durch. Die Beispiele verwenden <code>beispiel-betrieb.de<\/code> als Platzhalter. Wichtig: Testen Sie jede \u00c4nderung und nehmen Sie immer nur eine nach der anderen vor.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Software aktualisieren<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Veraltete Software ist der h\u00e4ufigste Einstiegspunkt f\u00fcr Angriffe. Das gilt f\u00fcr den WordPress-Kern ebenso wie f\u00fcr Plugins, Themes und die PHP-Version.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li>Vollst\u00e4ndiges Backup erstellen.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>WordPress-Kern, Plugins und Theme im Backend aktualisieren (Dashboard, Aktualisierungen).<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Nicht mehr ben\u00f6tigte oder nicht mehr gepflegte Plugins entfernen, nicht nur deaktivieren.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li>Im Kundenmen\u00fc des Hosters eine aktuell unterst\u00fctzte PHP-Version ausw\u00e4hlen und die Seite danach testen.<\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Mehr zur Bedeutung bekannter L\u00fccken lesen Sie im Beitrag <a href=\"https:\/\/wwwschutz.de\/blog\/angreifer-brauchen-sekunden-ihre-website-braucht-einen-plan\/\">Angreifer brauchen Sekunden \u2013 Ihre Website braucht einen Plan<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":5635,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/scores_vorher_nachher_befundstatus_korrigiert-1024x775.png\" alt=\"Vier Bewertungen vor und nach den Korrekturen: Gesamtrisiko von D auf B, SSL\/TLS von C+ auf A, HTTP-Header von F auf B, DNS und E-Mail von B auf A. Darunter der Status der 20 Befunde: 14 erledigt, 2 nicht relevant, 3 zur\u00fcckgestellt, 1 bewusst ignoriert.\" class=\"wp-image-5635\"\/><figcaption class=\"wp-element-caption\">Vorher-Nacher Vergleich Web Hosting.<\/figcaption><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">E-Mail-Absicherung im DNS<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ohne DMARC k\u00f6nnen Dritte E-Mails in Ihrem Namen verschicken. Die Empf\u00e4nger erkennen die F\u00e4lschung oft nicht. Die L\u00f6sung sind Eintr\u00e4ge in der DNS-Verwaltung Ihrer Domain.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Zun\u00e4chst DMARC im Beobachtungsmodus anlegen:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>Name: _dmarc.beispiel-betrieb.de\nTyp:  TXT\nWert: v=DMARC1; p=none; rua=mailto:dmarc@beispiel-betrieb.de<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Wenn die Berichte zeigen, dass nur legitime Absender auftauchen, versch\u00e4rfen Sie die Richtlinie schrittweise auf <code>p=quarantine<\/code> und sp\u00e4ter auf <code>p=reject<\/code>. Voraussetzung sind ein korrekter SPF-Eintrag und DKIM beim Mail-Anbieter:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>Name: beispiel-betrieb.de\nTyp:  TXT\nWert: v=spf1 include:spf.ihr-mailanbieter.de ~all<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Es darf nur einen SPF-Eintrag pro Domain geben. Den passenden <code>include<\/code>-Wert nennt Ihr Mail-Anbieter.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">HTTPS erzwingen und HTTP-Header setzen<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Fehlende Sicherheits-Header sind einfach zu beheben und bringen viel. Bei Apache erg\u00e4nzen Sie in der <code>.htaccess<\/code>, sofern das Modul <code>mod_headers<\/code> aktiv ist:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>RewriteEngine On\nRewriteCond %{HTTPS} off\nRewriteRule ^ https:\/\/%{HTTP_HOST}%{REQUEST_URI} &#91;L,R=301]\n\n&lt;IfModule mod_headers.c&gt;\nHeader always set Strict-Transport-Security \"max-age=86400\"\nHeader always set X-Content-Type-Options \"nosniff\"\nHeader always set X-Frame-Options \"SAMEORIGIN\"\nHeader always set Referrer-Policy \"strict-origin-when-cross-origin\"\nHeader always set Permissions-Policy \"geolocation=(), microphone=(), camera=()\"\n&lt;\/IfModule&gt;<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Bei nginx tragen Sie die Zeilen im <code>server<\/code>-Block ein:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>add_header Strict-Transport-Security \"max-age=86400\" always;\nadd_header X-Content-Type-Options \"nosniff\" always;\nadd_header X-Frame-Options \"SAMEORIGIN\" always;\nadd_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\nserver_tokens off;<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Zwei Hinweise dazu:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>HSTS<\/strong> zun\u00e4chst mit kurzer Laufzeit (hier ein Tag) setzen und erst nach erfolgreichem Test verl\u00e4ngern, etwa auf ein Jahr. Nehmen Sie <code>includeSubDomains<\/code> nur dazu, wenn alle Subdomains \u00fcber HTTPS erreichbar sind.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Content-Security-Policy<\/strong> ist wirksam, aber anspruchsvoll, weil WordPress und viele Plugins Inline-Code verwenden. Starten Sie mit <code>Content-Security-Policy-Report-Only<\/code> und werten Sie die Meldungen in der Browser-Konsole aus, bevor Sie die Richtlinie scharf stellen.<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Server-Banner und TRACE<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Zeigt der Server seine Software und Version an, erleichtert das gezielte Angriffe. Je nach Tarif l\u00e4sst sich das selbst abstellen oder nicht:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>ServerTokens Prod\nServerSignature Off\nTraceEnable Off<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Diese Apache-Einstellungen geh\u00f6ren in die Server-Konfiguration. Auf Shared Hosting wenden Sie sich daf\u00fcr an den Support. In der <code>php.ini<\/code> verhindert <code>expose_php = Off<\/code>, dass PHP seine Version preisgibt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">TLS-Versionen<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Die Protokolle TLS 1.0 und 1.1 gelten als veraltet. Aktiv sein sollten TLS 1.2 und 1.3. Das stellt in der Regel der Hoster ein. Fragen Sie im Support nach und achten Sie darauf, dass das Zertifikat automatisch erneuert wird.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">WordPress-spezifische H\u00e4rtung<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Der CMS-Check pr\u00fcft typische Angriffsfl\u00e4chen von WordPress. Im Beispiel waren vier davon relevant.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Login-Route absichern.<\/strong> Aktivieren Sie Zwei-Faktor-Authentifizierung f\u00fcr alle Konten mit Schreibrechten, begrenzen Sie Anmeldeversuche und beschr\u00e4nken Sie den Zugriff auf <code>\/wp-admin<\/code> nach M\u00f6glichkeit auf bekannte IP-Adressen oder eine zus\u00e4tzliche Passwortabfrage.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Versionsinformationen verbergen.<\/strong> L\u00f6schen Sie <code>readme.html<\/code>, oder sperren Sie die Datei, denn WordPress legt sie bei Updates neu an:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>&lt;Files readme.html&gt;\nRequire all denied\n&lt;\/Files&gt;<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p><strong>Benutzerliste sch\u00fctzen.<\/strong> Verhindern Sie, dass Besucher \u00fcber die REST-API alle Benutzernamen abrufen k\u00f6nnen:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>add_filter('rest_endpoints', function ($endpoints) {\n    if (!is_user_logged_in()) {\n        unset($endpoints&#91;'\/wp\/v2\/users']);\n        unset($endpoints&#91;'\/wp\/v2\/users\/(?P&lt;id&gt;&#91;\\d]+)']);\n    }\n    return $endpoints;\n});<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Pr\u00fcfen Sie vorher, ob ein Plugin oder eine App diesen Endpunkt tats\u00e4chlich ben\u00f6tigt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p><strong>Unn\u00f6tige Schnittstellen und Editoren schlie\u00dfen.<\/strong> Wird XML-RPC nicht gebraucht, l\u00e4sst es sich sperren. Den Datei-Editor im Backend schalten Sie in der <code>wp-config.php<\/code> ab:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>&lt;Files xmlrpc.php&gt;\nRequire all denied\n&lt;\/Files&gt;<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>define('DISALLOW_FILE_EDIT', true);<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Kontaktformular absichern<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ohne CSRF-Schutz lassen sich Formulare missbrauchen. Die meisten Formular-Plugins bieten diesen Schutz nach einem Update ab Werk. Bei selbst gebauten Formularen erg\u00e4nzen Sie in WordPress ein Nonce:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>&lt;form method=\"post\"&gt;\n    &lt;?php wp_nonce_field('kontakt_senden', 'kontakt_nonce'); ?&gt;\n    &lt;label for=\"nachricht\"&gt;Nachricht&lt;\/label&gt;\n    &lt;textarea id=\"nachricht\" name=\"nachricht\"&gt;&lt;\/textarea&gt;\n    &lt;button type=\"submit\"&gt;Senden&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Und pr\u00fcfen es beim Absenden serverseitig:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>if (!isset($_POST&#91;'kontakt_nonce']) || !wp_verify_nonce($_POST&#91;'kontakt_nonce'], 'kontakt_senden')) {\n    wp_die('Ung\u00fcltige Anfrage.');\n}<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Erg\u00e4nzend geh\u00f6ren Eingabevalidierung auf dem Server und ein Spam-Schutz (etwa ein unsichtbares Feld oder ein Zeitlimit) zu einem soliden Formular.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">XSS-Risiko im JavaScript beseitigen<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Wird Nutzereingabe ungepr\u00fcft per <code>innerHTML<\/code> in die Seite geschrieben, kann Schadcode eingeschleust werden. Schlecht:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>ausgabe.innerHTML = eingabe;<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Besser, wenn nur Text angezeigt werden soll:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>ausgabe.textContent = eingabe;<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p>Muss echtes HTML ausgegeben werden, bereinigen Sie es vorher mit einer gepr\u00fcften Bibliothek wie DOMPurify und validieren die Eingabe zus\u00e4tzlich auf dem Server.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Cookies und Speicher bereinigen<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Session-Tokens oder E-Mail-Adressen geh\u00f6ren nicht in den LocalStorage, weil jedes eingebundene Skript sie auslesen kann. Sitzungsdaten setzen Sie besser als Cookie mit Schutzattributen:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>setcookie('sitzung', $wert, &#91;\n    'expires' =&gt; 0,\n    'path' =&gt; '\/',\n    'secure' =&gt; true,\n    'httponly' =&gt; true,\n    'samesite' =&gt; 'Lax',\n]);<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Kontaktweg f\u00fcr Sicherheitsmeldungen<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Eine <code>security.txt<\/code> zeigt Sicherheitsforschern, wohin sie eine entdeckte L\u00fccke melden k\u00f6nnen. Legen Sie die Datei unter <code>\/.well-known\/security.txt<\/code> ab:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:code -->\n<pre class=\"wp-block-code\"><code>Contact: mailto:sicherheit@beispiel-betrieb.de\nExpires: 2027-09-30T23:59:59.000Z\nPreferred-Languages: de, en\nCanonical: https:\/\/www.beispiel-betrieb.de\/.well-known\/security.txt<\/code><\/pre>\n<!-- \/wp:code -->\n\n<!-- wp:paragraph -->\n<p><code>Contact<\/code> und <code>Expires<\/code> sind Pflichtfelder nach RFC 9116. Das Ablaufdatum sollte nicht mehr als ein Jahr in der Zukunft liegen und regelm\u00e4\u00dfig erneuert werden. Fehlt die Datei, liefert der Bericht des Security Checks eine fertige Vorlage.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":5638,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/ablauf_pruefen_beheben_erneut_pruefen-1-1024x534.png\" alt=\"Ablauf: Pr\u00fcfen, Priorisieren, Beheben, Dokumentieren, Erneut pr\u00fcfen\" class=\"wp-image-5638\"\/><figcaption class=\"wp-element-caption\">F\u00fcnf Schritte vom Scan zum Ergebnis.<\/figcaption><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Schritt 4: Fortschritt dokumentieren<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Gerade wenn mehrere Personen beteiligt sind, etwa Gesch\u00e4ftsf\u00fchrung, Agentur und Hoster, ist \u00dcbersicht wichtig. Im Bericht des Security Checks l\u00e4sst sich jeder Befund direkt mit einem Status versehen:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:list -->\n<ul class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Erledigt:<\/strong> Die Ma\u00dfnahme wurde umgesetzt<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Nicht relevant:<\/strong> Der Befund trifft auf diesen Fall nicht zu<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Zur\u00fcckgestellt:<\/strong> Wird sp\u00e4ter bearbeitet<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Ignoriert:<\/strong> Bewusst ausgeblendet, etwa bei einer bekannten, akzeptierten Einschr\u00e4nkung<\/li>\n<!-- \/wp:list-item --><\/ul>\n<!-- \/wp:list -->\n\n<!-- wp:paragraph -->\n<p>Zu jedem Status k\u00f6nnen Sie einen Kommentar hinterlegen, zum Beispiel eine Ticketnummer, eine Begr\u00fcndung oder den Namen des Verantwortlichen. Die Angaben sind f\u00fcr alle Bearbeiter des Berichts sichtbar, sodass jeder auf demselben Stand arbeitet.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Aus den bearbeiteten Befunden l\u00e4sst sich zus\u00e4tzlich ein Abschlussbericht als Management Summary erstellen. Er zeigt, was erledigt und was noch offen ist, bewertet das verbleibende Restrisiko und l\u00e4sst sich als PDF exportieren. Das ist ein brauchbarer Nachweis gegen\u00fcber Auftraggebern, Datenschutzbeauftragten oder Revisoren.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Schritt 5: Erneut pr\u00fcfen<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Erst der Re-Check zeigt, ob die Ma\u00dfnahmen wirklich wirken. Das ist der Moment, in dem sich M\u00fche und Ergebnis vergleichen lassen. Ein gesetzter Header kann falsch ausgeliefert werden, ein Update ein anderes Problem \u00f6ffnen, ein DNS-Eintrag noch nicht \u00fcbernommen sein.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Warten Sie nach DNS-\u00c4nderungen etwas ab, bis die Eintr\u00e4ge weltweit verbreitet sind, und leeren Sie bei Bedarf den Cache der Website. Starten Sie den Re-Check dann innerhalb des Zeitfensters von 30 Tagen, das der Pro-Check abdeckt.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Im Beispiel sieht das Ergebnis so aus:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Bereich<\/th><th>Vorher<\/th><th>Nachher<\/th><\/tr><\/thead><tbody><tr><td>Gesamtrisiko<\/td><td>D<\/td><td>B<\/td><\/tr><tr><td>SSL\/TLS<\/td><td>C+<\/td><td>A<\/td><\/tr><tr><td>HTTP-Header<\/td><td>F<\/td><td>B<\/td><\/tr><tr><td>DNS und E-Mail<\/td><td>B<\/td><td>A<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Und der Status der 20 Befunde in der Befundverwaltung:<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:table -->\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Status<\/th><th>Anzahl<\/th><\/tr><\/thead><tbody><tr><td>Erledigt<\/td><td>14<\/td><\/tr><tr><td>Nicht relevant<\/td><td>2<\/td><\/tr><tr><td>Zur\u00fcckgestellt<\/td><td>3<\/td><\/tr><tr><td>Bewusst ignoriert<\/td><td>1<\/td><\/tr><\/tbody><\/table><\/figure>\n<!-- \/wp:table -->\n\n<!-- wp:paragraph -->\n<p>Die drei zur\u00fcckgestellten Punkte sind typisch: die scharf gestellte Content-Security-Policy, die erst ausgiebig getestet werden muss, ein Hosting-Thema, das der Anbieter umsetzen muss, und die Einf\u00fchrung der Zwei-Faktor-Anmeldung f\u00fcr alle Redakteure. Das ist in Ordnung, solange sie dokumentiert sind und einen Termin haben. Das Restrisiko ist deutlich gesunken, aber nicht null. Und auch nach dem Re-Check bleibt Sicherheit ein laufender Prozess.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:image {\"id\":5642,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure class=\"wp-block-image size-large\"><img src=\"https:\/\/wwwschutz.de\/blog\/wp-content\/uploads\/sechs_erkenntnisse_vorher_nachher-1024x757.png\" alt=\"Sechs Erkenntnisse aus dem Beispiel in sechs Kacheln: Messen vor Handeln, Reihenfolge z\u00e4hlt, Backup ist Pflicht, Hoster einbinden, Dokumentieren, Regelm\u00e4\u00dfig pr\u00fcfen. Zusammenfassung: Erst messen, dann gezielt handeln, dann belegen.\" class=\"wp-image-5642\"\/><figcaption class=\"wp-element-caption\">Sechs Erkenntnisse: Messen vor Handeln, Reihenfolge z\u00e4hlt, Backup ist Pflicht, Hoster einbinden, Dokumentieren, Regelm\u00e4\u00dfig pr\u00fcfen<\/figcaption><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Was Sie aus dem Beispiel mitnehmen k\u00f6nnen<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:list {\"ordered\":true} -->\n<ol class=\"wp-block-list\"><!-- wp:list-item -->\n<li><strong>Messen vor Handeln.<\/strong> Ohne Ausgangswert bleibt jede Verbesserung eine Behauptung.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Reihenfolge schl\u00e4gt Perfektion.<\/strong> Kritische Befunde und schnelle Erfolge zuerst bringen den gr\u00f6\u00dften Gewinn.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Backup ist keine K\u00fcr.<\/strong> Jede \u00c4nderung am Live-System braucht einen R\u00fcckweg.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Der Hoster geh\u00f6rt dazu.<\/strong> Viele Punkte lassen sich nur gemeinsam mit dem Anbieter l\u00f6sen. Wer die Befunde mit Erkl\u00e4rung ans Support-Ticket h\u00e4ngt, kommt schneller zum Ziel.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Dokumentieren zahlt sich aus.<\/strong> Wer Status und Kommentare pflegt, kann sp\u00e4ter belegen, was wann gemacht wurde.<\/li>\n<!-- \/wp:list-item -->\n\n<!-- wp:list-item -->\n<li><strong>Regelm\u00e4\u00dfig wiederholen.<\/strong> Neue Plugins, Updates und Konfigurations\u00e4nderungen bringen neue Risiken. Planen Sie die Pr\u00fcfung als festen Termin ein, etwa halbj\u00e4hrlich und nach gr\u00f6\u00dferen \u00c4nderungen.<\/li>\n<!-- \/wp:list-item --><\/ol>\n<!-- \/wp:list -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">H\u00e4ufige Fragen<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Kann der Scan meine Website st\u00f6ren?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nein, der Scan arbeitet mit geringer Last und \u00e4ndert nichts an Ihrer Website. Er ist so ausgelegt, dass der laufende Betrieb nicht beeintr\u00e4chtigt wird.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Muss ich nach jeder \u00c4nderung neu pr\u00fcfen?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nicht nach jeder einzelnen. Sinnvoller ist es, einen Block von Ma\u00dfnahmen umzusetzen und dann zu pr\u00fcfen. Bei riskanteren \u00c4nderungen, etwa an der Serverkonfiguration, kontrollieren Sie zwischendurch im Browser, ob die Seite noch einwandfrei funktioniert.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Ersetzt der Security Check einen Penetrationstest?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nein. Er ist eine automatisierte Au\u00dfenpr\u00fcfung, die bekannte Schwachstellen und Fehlkonfigurationen zuverl\u00e4ssig findet. Ein Penetrationstest geht tiefer, pr\u00fcft Logik und Berechtigungen und ist ein anderes Werkzeug mit anderem Aufwand.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Ist das auch ein DSGVO-Check?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Nein. Der Security Check enth\u00e4lt zwar einen Cookie-Scan und eine Basispr\u00fcfung der Datenschutzhinweise, ist aber auf Sicherheit ausgerichtet. F\u00fcr eine vollst\u00e4ndige datenschutzrechtliche Pr\u00fcfung gibt es die <a href=\"https:\/\/wwwschutz.de\/loesungsfinder.html\">DSGVO-Website-Checks<\/a>.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Wird auch die Barrierefreiheit gepr\u00fcft?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Optional ja. Der Barrierefreiheits-Check ist Teil des Pakets und pr\u00fcft unter anderem Kontraste, Alternativtexte und Tastaturbedienung. Mehr dazu finden Sie auf der Seite zum <a href=\"https:\/\/wwwschutz.de\/accessibility-check.html\">Barrierefreiheits-Check<\/a>. Automatische Tests decken allerdings nur einen Teil der Kriterien ab und ersetzen keine manuelle Pr\u00fcfung.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"level\":3} -->\n<h3 class=\"wp-block-heading\">Wann sollte ich Fachleute hinzuziehen?<\/h3>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Wenn Sie nicht sicher sind, wie ein Befund zu beheben ist, wenn die \u00c4nderung Server oder Datenbank betrifft oder wenn Sie bereits Anzeichen f\u00fcr eine Kompromittierung sehen, etwa unbekannte Administratoren, fremde Dateien oder Spam-Versand. Dann z\u00e4hlt schnelle, fachkundige Hilfe.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading -->\n<h2 class=\"wp-block-heading\">Fazit<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n<p>Ein Vorher-Nachher-Vergleich macht aus einem diffusen Sicherheitsgef\u00fchl einen nachvollziehbaren Prozess: pr\u00fcfen, die wichtigsten Befunde beheben, dokumentieren und erneut pr\u00fcfen. Wer so vorgeht, schlie\u00dft nicht nur L\u00fccken, sondern kann auch zeigen, dass er es getan hat.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Wenn Sie wissen m\u00f6chten, wo Ihre eigene Website steht, dann ist der <a href=\"https:\/\/wwwschutz.de\/security-checks.html\">Website Security Check<\/a> ein guter Ausgangspunkt. Der <a href=\"https:\/\/wwwschutz.de\/securitybericht\">Beispielbericht<\/a> illustriert, wie ein Bericht aufgebaut ist.<\/p>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n<p>Web Security kann Dank Automatisierung mit vern\u00fcnftigem Aufwand geleistet werden - wichtiger denn je in Zeiten, wo Angreifer auch KI zum Finden von Schwachstellen einsetzen.<\/p>\n<!-- \/wp:paragraph -->","_links":{"self":[{"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/posts\/5630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/comments?post=5630"}],"version-history":[{"count":7,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/posts\/5630\/revisions"}],"predecessor-version":[{"id":5866,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/posts\/5630\/revisions\/5866"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/media\/5632"}],"wp:attachment":[{"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/media?parent=5630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/categories?post=5630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wwwschutz.de\/blog\/wp-json\/wp\/v2\/tags?post=5630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}