Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > ASP
Перезагрузить страницу Разграничение пра доступа к файлу папке
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
tokito tokito вне форума
Member
 
Сообщений: 477
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2004
По умолчанию 14.06.2007, 13:17

допустим есть папка dir, котрая лежит в корне сайта. в папке есть asp страницы при попытке попасть на которые происходит редирект на страницу авторизации из этой же папки. и если авторизация удачная, то пользователь может выполнять страницы из этой папки.

так вот, одна из страниц генерит текстовый файл. но банан в том что доступ к этому файлу по прямой ссылке получает все. https://localhost/dir/file.txt.

как разрулить эту ситуацию, может можно как-то настроить IIS так чтобы браузером запрашивались логин/пароль при попытке доступа к определенному узлу сайта.
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,447
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 14.06.2007, 16:04

как вариант: не генери текстовый файл на винт, а выдавай его в ответе (записью в выходной поток) сервера на запрос типа http://localhost/dir/files?getfile=file.txt, на самой странице уже можно проверить кто и откуда зашёл.
Ответить с цитированием
  (#3 (permalink)) Старый
tokito tokito вне форума
Member
 
Сообщений: 477
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2004
По умолчанию 14.06.2007, 17:21

Цитата:
выдавай его в ответе (записью в выходной поток) сервера
вот с этого момента поподробнее плиз. что за выходной поток такой и как туда записывать?

необходимо чтобы была ссылка, нажав на которую можно было сохранить этот текстовый файл (требование заказчика)
Ответить с цитированием
  (#4 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,447
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 14.06.2007, 17:52

Код:
Response.Clear();
Response.Output.Write(str);//str - строка, содержимое файла
Response.Flush();
Response.Close();
это на C#, ASP.Net, насколько это соотносится с обычным ASP не знаю, но что-то подобное должно быть
Ответить с цитированием
  (#5 (permalink)) Старый
tokito tokito вне форума
Member
 
Сообщений: 477
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2004
По умолчанию 14.06.2007, 18:15

нет такой коллекции у респонза в ASP

Код:
Microsoft VBScript runtime  error '800a01b6'

Object doesn't support this property or method: 'Response.Output'
тем более это не снимает вопроса о ссылке нажав на которую правой кнопкой можно было бы сохранить файл
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,447
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 14.06.2007, 20:43

есть, это какой-то глюк, у меня сейчас решился удалением проекта, перезагрузкой винды и пересозданием проекта...
Код:
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        link</div>
    </form>
</body>
</html>
Код:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string file = Request["getfile"];
        if (file != null)
        {
            file = Path.Combine(Request.PhysicalApplicationPath, file);
            //StreamReader sr = new StreamReader(File.Open(file, FileMode.Open, FileAccess.Read));
            //string str = sr.ReadToEnd();
            //sr.Close();
            Response.Clear();
//            Response.Write(str);
            Response.ClearHeaders();
            //Response.ContentType = "text/html";
            Response.ContentType = "plain/text";
            //Response.ContentType = "binary/octet-stream";
            Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(file));
            Response.WriteFile(file);
            Response.Flush();
        }
    }
}
при клике на линке выводится запрос на загрузку, даже левой кнопкой
Ответить с цитированием
  (#7 (permalink)) Старый
tokito tokito вне форума
Member
 
Сообщений: 477
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2004
По умолчанию 14.06.2007, 22:36

это .NET. а мне надо чистый ASP
но все равно спасибо!
Ответить с цитированием
  (#8 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,447
Сказал(а) спасибо: 22
Поблагодарили 944 раз(а) в 928 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 14.06.2007, 22:40

смысл тот же, только средства другие)
Ответить с цитированием
  (#9 (permalink)) Старый
tokito tokito вне форума
Member
 
Сообщений: 477
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 01.10.2004
По умолчанию 15.06.2007, 12:01

все получилось

Код:
    Response.Clear()
    Response.ContentType = "plain/text"
    Response.AddHeader "Content-Disposition", "attachment; filename=emails.txt"

      ...
      Response.Write(str & chr(13) & chr(10))
      ...

    Response.Flush()
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как убрать окно Нет доступа к целевой папке addertu Любые вопросы от новичков 15 27.10.2011 20:03
нет доступа к папке KoIIIkaBest Windows Vista 1 02.05.2010 16:16
Изменение прав доступа к папке. Egoran Любые вопросы от новичков 1 09.01.2010 10:25
Запрет доступа к папке как его поставить Kalex С/С++ 1 19.11.2009 23:42
После переустановки ОС нет доступа к старой папке Documents and Settings. Kosmos Техническая поддержка 5 23.08.2008 11:29
Задание прав доступа к файлу Aykis Visual Basic 0 10.10.2006 01:50
Изменение прав доступа к файлу Ataman Delphi 0 24.10.2005 21:56
Диалог правки прав доступа к файлу и папке Dian WinAPI 1 24.12.2004 04:10
Как можно отследить обращние к файлу для закрытия доступа imported_@LeX Visual C++ 3 07.07.2004 21:28
Отслеживание доступа к файлу General Общие вопросы программирования 1 02.05.2004 23:35
Права доступа к файлу NTFS AVan Visual C++ 0 05.12.2003 15:15
Разграничение доступа на композитные типы данных Danger Dancer PostgreSQL 0 10.02.2003 17:32



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов