webForumDet fria alternativet

Databasbaserad IP-spärr

1 svar · 360 visningar · startad av medialabs

medialabsMedlem sedan mars 20023 686 inlägg
#1

Hej,

Har upptäckt att behovet att kunna spärra enskilda IP-adresser samt hela IP-ranges från att komma åt en webbaserad tjänst så skulle jag behöva lite hjälp med att klura ut den lite mer avancerade biten.

Just nu kan jag blockera enskilda IP-adresser, men jag skulle vilja ha möjlighet att blockera hela IP-nummerserier / subnät

Enklast är väl att direkt köra IP-numret i själva sql-frågan och göra en sökning i en databas med följande uppbyggnad.

ID - vanligt id
IPNumber - ip-numer/serie som ska spärras
Attempts - hur många försök som gjorts från detta ip att besöka sidan
LastAttempt - när senaste försöket gjordes

Hittade en bra början av Solbulle

RecSet.Open "SELECT * FROM blsyslog WHERE UserIP = '" & Request.Servervariables("REMOTE_ADDR") & "'", Connect

Hur utvecklar jag den vidare så att om besökaren faktiskt är blockerad sedan tidigare så uppdateras kolumnen Attempts och LastAttempt? Misstänker att jag får köra någon form av

if not RecSet.eof then
köra någon form av UPDATE tblsyslog SET ... ?
end if

Känner någon till ett redan existerande IP-blockeringsscript så att man slipper uppfinna hjulet en gång till?

Nuvarande kod som används

<%
Dim check, blocked
CheckUser = Request.ServerVariables("REMOTE_ADDR")
UserBlocked = "10.0.0.2, 10.0.0.3, 10.0.0.7"

If InStr(UserBlocked, UserCheck) Then
  response.write "Pga av tidigare intrångsförsök spårade till din IP-adress är denna tjänst ej tillgänglig längre för dig. Vid frågor, kontakta oss på zx@yw.nn"
End If
%>
rille77Medlem sedan feb. 200476 inlägg
#2

För att spärra enskild IP så är det här en enkel kod
Bytut till dn connection och ändra till rätt tabell/fältnamn i SQL

<%
strUserIp = Request.ServerVariables("REMOTE_ADDR")
strSQL = "SELECT COUNT(*) FROM blsyslog WHERE UserIP = '"& strUserIp &"';"
%>

blnBlocked = CBool(Connection.Execute(strSQL).Fields(0).Value)

If blnBlocked Then
  strSQL = "UPDATE blsyslog SET attempts = attempts + 1, LastAttempt = DATE() WHERE UserIP = '"& strUserIp &"';"
  Connection.Execute(strSQL)
  response.write "Pga av tidigare intrångsförsök spårade till din IP-adress är denna tjänst ej tillgänglig längre för dig. Vid frågor, kontakta oss på zx@yw.nn"
Response.End
End If
%>
End If
130 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)