none
RouteConfg.cs RRS feed

  • Pergunta

  • Olá,

    eu estou com um problema de segurança ao acessar um relatório em minha aplicação MVC4 c#.

    Como poderia fazer para ocultar o "codigo da URL": http://localhost:3055/Anim_/Report/PDF?codigo=3,

    Se eu mudar o codigo=3 para o codigo=2 eu visualizo as informações de outro usuário, rsrsrs.

    É possível mudar isso?

    Alguém tem alguma sugestão onde postar a dúvida?

    Abaixo o código:

    public ActionResult Report(string id, int codigo)
            {
                LocalReport lr = new LocalReport();
                string path = Path.Combine(Server.MapPath("~/Reporter"), "Identificacao.rdlc");
                if (System.IO.File.Exists(path))
                {
                    lr.ReportPath = path;
                }
                else
                {
                    return View("Identificacao");
                }
                var cm = db.spIdentificacao(codigo).ToArray();      
               
                ReportDataSource rd = new ReportDataSource("DataSet1", cm);           
                lr.DataSources.Add(rd);           
                string reportType = id;
                string mimeType;
                string encoding;
                string fileNameExtension;
    
                string deviceInfo =
    
                "<DeviceInfo>" +
                "  <OutputFormat>" + id + "</OutputFormat>" +
                "  <PageWidth>5.83in</PageWidth>" +
                "  <PageHeight>8.27in</PageHeight>" +
                "  <MarginTop>0.01in</MarginTop>" +
                "  <MarginLeft>0.1in</MarginLeft>" +
                "  <MarginRight>0.1in</MarginRight>" +
                "  <MarginBottom>0.01in</MarginBottom>" +
                "</DeviceInfo>";
    
                Warning[] warnings;
                string[] streams;
                byte[] renderedBytes;
    
                renderedBytes = lr.Render(
                    reportType,
                    deviceInfo,
                    out mimeType,
                    out encoding,
                    out fileNameExtension,
                    out streams,
                    out warnings);
    
    
                return File(renderedBytes, mimeType);
            }

    O mesmo caso ocorre quanto edito um fomulário, por exemplo:

    http://localhost:3055/Login/Edit_user/1

     No meu arquivo RouteConfig.cs eu tenho o seguinte código:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
    
    namespace OG
    {
        public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                    namespaces: new[] { "OG.Controllers"}
                );
            }
        }
    }

    segunda-feira, 28 de setembro de 2015 23:47