Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      Sentry launches MCP monitoring tool

      August 14, 2025

      10 Benefits of Hiring a React.js Development Company (2025–2026 Edition)

      August 13, 2025

      From Line To Layout: How Past Experiences Shape Your Design Career

      August 13, 2025

      Hire React.js Developers in the US: How to Choose the Right Team for Your Needs

      August 13, 2025

      I’ve tested every Samsung Galaxy phone in 2025 – here’s the model I’d recommend on sale

      August 14, 2025

      Google Photos just put all its best editing tools a tap away – here’s the shortcut

      August 14, 2025

      Claude can teach you how to code now, and more – how to try it

      August 14, 2025

      One of the best work laptops I’ve tested has MacBook written all over it (but it’s even better)

      August 14, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      Controlling Execution Flow with Laravel’s Sleep Helper

      August 14, 2025
      Recent

      Controlling Execution Flow with Laravel’s Sleep Helper

      August 14, 2025

      Generate Secure Temporary Share Links for Files in Laravel

      August 14, 2025

      This Week in Laravel: Filament 4, Laravel Boost, and Junie Review

      August 14, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      KDE Plasma 6 on Wayland: the Payoff for Years of Plumbing

      August 14, 2025
      Recent

      KDE Plasma 6 on Wayland: the Payoff for Years of Plumbing

      August 14, 2025

      FOSS Weekly #25.33: Debian 13 Released, Torvalds vs RISC-V, Arch’s New Tool, GNOME Perfection and More Linux Stuff

      August 14, 2025

      Ultimate ChatGPT-5 Prompt Guide: 52 Ideas for Any Task

      August 14, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»News & Updates»CodeSOD: A Jammed Up Session

    CodeSOD: A Jammed Up Session

    May 15, 2025

    Andre has inherited a rather antique ASP .Net WebForms application. It’s a large one, with many pages in it, but they all follow a certain pattern. Let’s see if you can spot it.

    protected void btnSearch_Click(object sender, EventArgs e)
    {
        ArrayList paramsRel = new ArrayList();
        paramsRel["Name"] = txtNome.Text;
        paramsRel["Date"] = txtDate.Text;
        Session["paramsRel"] = paramsRel;
       
        List<Client> clients = Controller.FindClients();
        //Some other code
    }
    

    Now, at first glance, this doesn’t look terrible. Using an ArrayList as a dictionary and frankly, storing a dictionary in the Session object is weird, but it’s not an automatic red flag. But wait, why is it called paramsRel? They couldn’t be… no, they wouldn’t…

    public List<Client> FindClients()
    {
        ArrayList paramsRel = (ArrayList)Session["paramsRel"];
        string name = (string)paramsRel["Name"];
        string dateStr = (string)paramsRel["Date"];
        DateTime date = DateTime.Parse(dateStr);
       
       //More code...
    }
    

    Now there’s the red flag. paramsRel is how they pass parameters to functions. They stuff it into the Session, then call a function which retrieves it from that Session.

    This pattern is used everywhere in the application. You can see that there’s a vague gesture in the direction of trying to implement some kind of Model-View-Controller pattern (as FindClients is a member of the Controller object), but that modularization gets undercut by everything depending on Session as a pseudoglobal for passing state information around.

    The only good news is that the Session object is synchronized so there’s no thread safety issue here, though not for want of trying.

    [Advertisement]
    Keep all your packages and Docker containers in one place, scan for vulnerabilities, and control who can access different feeds. ProGet installs in minutes and has a powerful free version with a lot of great features that you can upgrade when ready.Learn more.

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous Articlecoturn is an implementation of TURN and STUN Server
    Next Article SunFounder Pironman 5 NVMe Mini PC Case Review

    Related Posts

    News & Updates

    I’ve tested every Samsung Galaxy phone in 2025 – here’s the model I’d recommend on sale

    August 14, 2025
    News & Updates

    Google Photos just put all its best editing tools a tap away – here’s the shortcut

    August 14, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    Windows 11’s New Adaptive Energy Saver Now in Preview for Laptops and Tablets

    Operating Systems

    Microsoft’s Clipchamp makeover nearly complete, Stream gets fresh new face

    Operating Systems

    CISA tags Broadcom Fabric OS, CommVault flaws as exploited in attacks

    Security

    “That was really frustrating for us on the dev side.” Halo dev explains how one of the Xbox series’ biggest controversies came to be

    News & Updates

    Highlights

    News & Updates

    Kingdom Come: Deliverance 2’s developer is about to get a whole lot bigger, and I can’t wait to see its next game

    June 4, 2025

    Warhorse Studios, the development team behind Kingdom Come: Deliverance 2, is expanding with a new…

    Russian basketball player arrested in ransomware case despite being “useless with computers”

    July 11, 2025

    rmsramos/activitylog

    April 1, 2025

    OpenAI’s GPT-5 is here

    August 8, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.