La prévention des hotlinks ASP a toujours été un casse-tête pour les amis qui créent des sites Web à des fins publicitaires. Les hotlinks affectent sérieusement le fonctionnement normal des serveurs et des sites Web. Aujourd'hui, examinons une méthode pour mettre en œuvre la prévention des hotlinks ASP. . Bar.
Si nous connaissons le chemin réel d'un fichier statique tel que : http://www.xx.com/download/webjx.pdf, et si le serveur ne définit aucune restriction particulière, nous pouvons le télécharger sans effort ! Lorsque le site Web propose le téléchargement webjx.pdf, comment pouvons-nous empêcher le téléchargeur d'obtenir son chemin réel ? Cet article explique comment utiliser Asp pour masquer le chemin de téléchargement réel des fichiers.
Lorsque nous gérons les fichiers d'un site Web, nous pouvons placer les fichiers avec la même extension dans le même répertoire et leur donner un nom spécial. Par exemple, le répertoire où sont placés les fichiers pdf est the_pdf_file_s, et le code suivant est enregistré sous down.asp, et son chemin en ligne est http://www.xx.com/down.asp, nous pouvons utiliser http://www.xx.com/down.asp?FileName=webjx.pdf pour télécharger ce fichier, ainsi que le téléchargeur. Je ne peux pas voir ce fichier. Le chemin de téléchargement réel ! Dans down.asp, nous pouvons également définir si le téléchargement de fichiers nécessite une connexion et déterminer si la page source téléchargée est un site Web externe, empêchant ainsi les fichiers d'être liés.
<% From_url = Cstr(Request.ServerVariables(HTTP_REFERER)) Serv_url = Cstr(Request.ServerVariables(SERVER_NAME)) si mid(From_url,8,len(Serv_url)) <> Serv_url alors réponse.write Lien illégal ! ''Empêcher les liens hypertextes réponse.end finir si si Request.Cookies (Connecté) = alors réponse.redirect /login.asp « Nécessite une connexion ! finir si Fonction GetFileName(longname)''/folder1/folder2/file.asp=>file.asp while instr(nom long,/) nom long = droite (nom long, len (nom long) -1) wend GetFileName = nom long Fonction de fin Flux faible Dim Contenu Dim Nom du fichier Dim TrueFileName Faible FichierExt Const adTypeBinary = 1 NomFichier = Request.QueryString(NomFichier) si NomFichier = Alors Response.Write Nom de fichier invalide ! Réponse.Fin Terminer si FileExt = Mid(FileName, InStrRev(FileName, .) + 1) sélectionnez Case UCase (FileExt) Cas ASP, ASA, ASPX, ASAX, MDB Réponse.Écrivez une opération illégale ! Réponse.Fin Fin de la sélection Réponse.Effacer si lcase(right(FileName,3))=gif ou lcase(right(FileName,3))=jpg ou lcase(right(FileName,3))=png alors Response.ContentType = image/* ''Aucune boîte de dialogue de téléchargement n'apparaît pour les fichiers image autre Response.ContentType = application/ms-téléchargement finir si Disposition du contenu Response.AddHeader, pièce jointe ; nom de fichier = & GetFileName (Request.QueryString (FileName)) Définir Stream = server.createObject (ADODB.Stream) Stream.Type = adTypeBinary Flux.Ouvrir if lcase(right(FileName,3))=pdf then ''Définir le répertoire de fichiers de type pdf TrueFileName = /the_pdf_file_s/&FileName finir si if lcase(right(FileName,3))=doc then ''Définissez le répertoire du fichier de type DOC TrueFileName = /my_D_O_C_file/&FileName finir si si lcase(right(FileName,3))=gif ou lcase(right(FileName,3))=jpg ou lcase(right(FileName,3))=png alors TrueFileName = /all_images_/&FileName ''Définir le répertoire du fichier image finir si Stream.LoadFromFile Server.MapPath(TrueFileName) Bien que vous ne soyez pas Stream.EOS Réponse.BinaryWrite Stream.Read(1024 * 64) Wende Stream.Fermer Définir le flux = Rien Réponse.Flush Réponse.Fin %> |