07. juni 2005 - 22:25Der er
45 kommentarer og 1 løsning
IP ban system i ASP.
Hej alle sammen derude.
Jeg vil meget gerne høre om der er en eller flere der kan hjælpe mig med et IP ban system - helst i ASP.
Det skal helst fungere sådan:
Man trykker på et link hvor man kommer videre til en side hvor selve scriptet er. Så er der en box hvor man skriver IP'en i. Nu skulle han/hun være IP bannet fra siden.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
den nemmeste løsning vil være at du f.eks. bruger acces til at gemme oplysninger i... du har en side hvor du indtaster den ip nummer som skal bannes,f.eks. formular.asp: -------------- <form method="post" action="formular.asp?send=ip"> <input name="ip" type="text" id="ip"> <input type="Submit" name="Submit" value="Ban IP"> </form>
<% Set Sur = Server.CreateObject("ADODB.Connection") Sur.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb")
send = Request.QueryString("send")
if send="ip" then call ip else end if %>
<%sub ip Set Sur = Server.CreateObject("ADODB.Connection") Sur.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb")
Set tilfoj = server. CreateObject("ADODB.Recordset") gem = "Select * from ipban" gir.Open gem,sur,1,3
Dim ip
ip = request.form("ip") tilfoj.AddNew tilfoj("ip") = ip tilfoj.Update
response.Redirect("dinside.asp") response.end %> <% end if end sub %>
<% sur.Close Set sur = Nothing %> --------------------
og på den side hvor brugeren ikke skal have adgang til tilføjer du: <% set conn=server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.Recordset")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb") SQL = "select * from dintabel where ip = '" & Request.ServerVariables("REMOTE_ADDR") & "'"
if not rs.eof then response.write "Ingen adgang!!!!!" response.end set rs=Conn.Execute(SQL) %>
jeg ved ikke lige om det kommer til at virke.. har leget lidt med koden undervejs.. men du kan da lige prøve engang :o)
Bare nysgerrig for ønsket af IP ban ? I mine øjne er det en "farlig" ting da utrolig mange sidder flere bag samme IP på arbejdspladser og biblioteker mm Endvidere med trådløs teknologi går flere og flere på nettet med DHCP servere hvorved de får en midlertidig IP som så skifter og lidt efter tilhører en anden bruger. Mao. risikerer man at spærre for folk som slet intet har gjort galt samtidig med der stadig er åbent for folk som gør noget galt.
Passwords beskyttelse ville jeg selv foretrække men det er jo så ikke sikker at det ville virke i dit tilfælde :o) Nå men det var bare lidt tanker :o)
Jeg har desværre ikke winzip installeret på denne maskine, men du skal vel også pakke den ud inden du uploader den, da du skal inkludere en fil på de sider hvor der skal "IPbannes"
<!-- #include virtual="/_includes/database.asp" --> <% ' ****************************************** ' ****** Development and Copyright by ****** ' ****************************************** ' *************** Submann.dk *************** ' ****************************************** ' *** Please keep these line in the code *** ' ******************************************
' Hvis brugeren har trykket på knappen If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
' Opret nogle variabler Dim strSQL Dim Ip Dim Grund Dim ToDate Dim BanAf Dim BanAfMail
' Er der skrevet noget i ip feltet? If (Request.Form("Ip") <> "") Then
' Er der skrevet noget i grund feltet? If (Request.Form("Grund") <> "") Then
' Er der skrevet noget i ToDate feltet? If (Request.Form("ToDate") <> "") Then
' Er der skrevet noget i mail feltet? If (Request.Form("BanAfMail") <> "") Then
' Så sikre vi os lige at variablerne er tomme inden vi går i gang Ip = "" BanAf = "" ToDate = "" Grund = "" BanAfMail = ""
' Hent data fra formular ip = Request.Form("ip") grund = Request.Form("grund") ToDate = Request.Form("ToDate") BanAfMail = Request.Form("BanAfMail")
' Henter brugernavn via session BanAf = Session("Brugernavn") ' Eller Session("UserName") eller hvad du nu bruger i din login ' Hvis du ikke bruger login skal dette tilføjes i BanBruger.asp: ' <td VALIGN="top"> ' <b>Mit brugernavn:</b> ' </td> ' <td VALIGN="top"> ' <input type="text name="BanAf""><br> ' </td> ' </tr> ' og dette skal rettes: BanAf = Session("Brugernavn") til BanAf = Request.Form("BanAf")
strSQL = "INSERT INTO ban (Ip, Grund, ToDate, BanAfMail, BanAf) VALUES ('" & ip & "','" & grund & "','" & ToDate & "','" & BanAfMail & "','" & BanAf & "')"
' Så udfører vi strSQL objConn.Execute strSQL
' Så skal vi lige se hvad vi har lavet Response.Write "Ip " & "<B>" & ip & "</B>" & " er blevet tilføjet listen over banned ip´er" & "<br>" & vbCrLf Response.Write "Ip´en er blevet banned af " & "<B>" & BanAf & "</B>" & " med mail adr: " & "<B>" & BanAfMail & "</B>" & "" & "<br>" & vbCrLf Response.Write "Ip´en blev banned med denne grund: " & "<B>" & Grund & "</B>" & "" & "<br>" & vbCrLf Response.Write "Ip´en er blevet banned til: " & "<B>" & ToDate & "</B>" & "" & vbCrLf
' Hvis der ikke er skrevet noget i mail feltet else Response.Write "Du mangler at indtaste en mail adresse..." & vbCrLf End if
' Hvis der ikke er skrevet noget i ToDate feltet else Response.Write "Du mangler at indtaste hvor længe ip´en er banned..." & vbCrLf End if
' Hvis der ikke er skrevet noget i grund feltet else Response.Write "Du mangler at indtaste en grund..." & vbCrLf End if
' Hvis der ikke er skrevet noget i ip feltet else Response.Write "Du mangler at indtaste en ip..." & vbCrLf End if
' Afslut om der er trykket på knap check else Response.Write "Der er ikke trykket på knappen !!!" & vbCrLf Response.Write "<br>" & "Så hvordan er du lige kommet ind på denne side ?" & vbCrLf End If
Set ObjRS = ObjConn.Execute("SELECT * FROM Ban WHERE ip = '" & Request.ServerVariables("REMOTE_ADDR") & "'")
If NOT ObjRS.EOF then If ObjRS("ToDate") > Date() Then Dim ip ip = "" ip = Request.QueryString("ip")
strSQL = "DELETE * FROM ban WHERE Ip = '" & ip & "'" objConn.Execute strSQL Else Response.Redirect "Banned.asp" End If
End if
' Husk at lukke objRS.Close ' og rydde op Set objRS = Nothing
%>
********** Banned.asp **********
<!-- #include virtual="/_includes/database.asp" --> <% ' ****************************************** ' ****** Development and Copyright by ****** ' ****************************************** ' *************** Submann.dk *************** ' ****************************************** ' *** Please keep these line in the code *** ' ******************************************
' Opret variable(r) Dim objRS
Set objRS = objConn.Execute("SELECT BanAf, ToDate, Grund, BanAfMail FROM ban WHERE ip = '" & Request.ServerVariables("REMOTE_ADDR") & "'")
Response.Write "Du er blevet banned fra Jon-Dahl.tk!" & "<br>" & vbCrLf Response.Write "Du blev banned af: " & ObjRS("BanAf") & "" & "<br>" & vbCrLf Response.Write "Du blev banned til: " & ObjRS("ToDate") & "" & "<br>" & vbCrLf Response.Write "Grund til banning: " & ObjRS("Grund") & "" & "<br>" & vbCrLf Response.Write "<br>" & "<br>" & "Du kan kontakte <A HREF=""mailto:" & ObjRS("BanAfMail") & """>" & ObjRS("BanAfMail") & "</A>" & " hvis du ikke mener det er fair."
' Husk at lukke objRS.Close ' og rydde op Set objRS = Nothing
%>
********** liste.asp **********
<!-- #include virtual="/_includes/database.asp" --> <% ' ****************************************** ' ****** Development and Copyright by ****** ' ****************************************** ' *************** Submann.dk *************** ' ****************************************** ' *** Please keep these line in the code *** ' ******************************************
' Opret variable(r) Dim objRS
Set objRS = objConn.Execute("SELECT * FROM ban")
' Et lille check på om vi fik records ... If (Not objRS.BOF) And (Not objRS.EOF) Then ' vi fik mindst én record objRS.MoveFirst ' flyt til den første Response.Write "<CENTER>" & "<H1>" & "Her er listen over ip adresser der er banned" & "</H1>" & "<P>" & vbCrLf While Not objRS.EOF Response.Write "<H3>" & "<U>" & ObjRS("Ip") & "</U>" & "</H3>" & "<P>" & vbCrLf Response.Write "<B>" & "Grund: " & "</B>" & ObjRS("Grund") & "<br>" & vbCrLf Response.Write "<B>" & "Banned til: " & "</B>" & ObjRS("ToDate") & "<br>" & vbCrLf Response.Write "<B>" & "Banned af: " & "</B>" & ObjRS("BanAf") & "<br>" & vbCrLf Response.Write "<B>" & "Mail adr: " & "</B>" & ObjRS("BanAfMail") & "<br>" & vbCrLf Response.Write "<a href=""Slet_ip.asp?ip=" & objRS("ip") & """>" & "Slet" & "</a>" & vbCrLf Response.Write "<HR>" & vbCrLf objRS.MoveNext ' hent næste record Wend ' overstået Response.Write "</CENTER>" & vbCrLf ' Hvis der ikke er nogle på listen else Response.Write "<CENTER>" & "<H1>" & "Listen er tom..." & "</H1>" & "</CENTER>" & vbCrLf End If
' Husk at lukke objRS.Close ' og rydde op Set objRS = Nothing
%>
********** Slet_ip.asp **********
<!-- #include virtual="/_includes/database.asp" --> <% ' ****************************************** ' ****** Development and Copyright by ****** ' ****************************************** ' *************** Submann.dk *************** ' ****************************************** ' *** Please keep these line in the code *** ' ******************************************
Dim ip ip = "" ip = Request.QueryString("ip")
strSQL = "DELETE * FROM ban WHERE Ip = '" & ip & "'" objConn.Execute strSQL
Response.Write "Ip " & ip & " er nu blevet slettet fra listen..." & "<P>" & vbCrLf Response.Write "<a href=""liste.asp"">" & "Tilbage" & "</a>" & vbCrLf %>
busschou > det har ganske enkelt noget at gøre med at han TROR jeg snyder på www.solutions2all.dk/ og mener jeg har "mikevi" derinde også.
Så TROR han også fordi folk ikke får point er det fordi at jeg ikke gider, men det simpelthen fordi det ikke virker. Eller også kommer de med et eller andet mærkeligt svar som jeg slet ikke bad om. Andet handler det ikke om.
Jeg syntes det er latterligt at submann skal prøve at forhindre mig i at få hjælp herinde og inde på http://www.solutions2all.dk/ bare fordi det ikke virker. Og når jeg har skrevet det ikke virker, svarer folk ikke mere. Totalt meningsløst.
Beklager jeg først læser det nu, af en eller anden grund får jeg ikke mail fra eksperten.dk
Jo det kan jeg da godt...
På www.solutions2all.dk findes mikevi også, bare under navnet lukum. Der findes også en mikevi på http://www.solutions2all.dk Jeg (Jeg er ikke den eneste) mener at lukum og mikevi er en og samme person på S2all
submann > den eneste der "fusker" folk her er fandeme dig. Hvordan pokker kan du få dette spørgsmål til at jeg "bare" lukker det. Skrev manden måske et svar nææh men kommemtarer hvad pokker tror du ellers man skal gøre.
mikevi >> jeg kan kun være enig i at det ikke er særligt "høfligt" skrevet det du har haft skrevet...uanset hvad Anyway så mener jeg så stadig at IP ban er noget hø da man risikerer ramme uskyldige...så hellere lave et Ban på brugernavnet
først have point? den forstod jeg ikke?? Hvis en bruger skal logge ind for at få adgang, ja så har du jo en database I tabellen tilføjer du et felt "ban" som kan være True eller False ,,,eller "ja"/"nej" Når du vil banne en sætter du feltet til True Du søger for at lave dit login system om så du vælger personen ud som normalt Hvis rs("ban") = True så skriver du "du er blevet banlyst pga dårlig opførsel" eller lign
nårh , 100point er vel nok herinde - synes jeg! Hvis det er samme side som du har givet mig link til hvor man logger ind så bruger du vel allerede en database med brugernavne og login ?
Når brugeren logger ind så har du allerede en sql ala Select * From tabel where user = "&request.form("navn")&" and pass = "&request.form("pass") Altså noget i den dur må du allerede have ikke ? :o) Så har du sikkert også en set rs=conn.execute(sql) if not rs.eof then //så er brugeren fundet else // så er brugeren ikke fundet end if -- Den kan du lave om til -- if not rs.eof then if rs("ban") = True then response.write("du er blevet banned") else //bruger ok end if else // så er brugeren ikke fundet end if
Kommentar: submann 19/06-2005 17:32:20 Så til næste gang skal du måske prøve at skrive noget ala dette:
Det virker, Tak. Lig et svar hvis du vil have point...
Som du sikkert har set står det i 1000 vis af andre spørgsmål som ikke indeholder et svar...
Så måske det var dig der skulle prøve at tænke lidt, det er nok det du får mest ud af...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.