Urgent.News

What's breaking now, across thousands of outlets.

Tech

Invoice Ninja's Portal Is Not the Staff Console

Invoice Ninja's Portal Is Not the Staff Console Invoice Ninja exposes a staff-facing administration interface, a client portal, and an API. Those surfaces serve different users and should not share the same assumptions about permissions. A product-level inventory can show where an instance appears; it cannot show which portal paths are public or which staff accounts can see every company record.…

Invoice Ninja offers a staff-facing administration interface, a client portal, and an API, each serving distinct users with different permission levels. While an inventory can identify where an instance exists, it cannot determine which portal paths are public or which staff accounts can view all company records. On October 30, 2026, ZoomEye used sub_type=all, page 1, and page size 1 parameters in count-only queries for app=Invoice Ninja, revealing no results.

The title query returned 4,051, indicating multiple visible page titles. This distinction in results is crucial for understanding where the system's boundaries lie. The product's user guide delineates separate user logins and permission sets, with bookkeepers potentially receiving access to payments and reports without client-edit rights.

The system also documents user management, invitations, and company membership. When a person is removed from a company, their data should be deleted, but the account might remain accessible for another company. To ensure security, staff should have two-factor authentication enabled. The API tokens and client-portal sessions have different lifetimes and recovery methods, underscoring that MFA on a browser login does not automatically protect a leaked API token.

The client portal is designed to display a client's invoices, payments, statements, subscriptions, and saved payment methods. It should not allow one client to read another's invoice or download URL. The API documentation specifies authentication using API secrets or tokens, returning user permission information. Each integration must have a distinct user and scope; staff owners' secrets must not be reused in public integrations or committed to deployment repositories.

The self-host installation includes a web stack and background jobs, with the maintenance endpoint, storage directory, or queue dashboard potentially not sharing the portal's login boundary. All exposed hostnames should be inventoried, not just the main application URL. A test plan involves creating two test companies and one user in each, verifying invoice and client visibility through the UI, repeating with API requests and direct file downloads, removing a user from one company and retesting, revoking a test API token and confirming denial, and inspecting public listeners for the portal, staff console, and API.

Synthetic invoice data should be used, avoiding real payment methods or customer email addresses. The operational value lies in determining whether the portal exposes only the intended client's data and whether staff permissions persist through company or role changes. A global count aids in identifying the product class, while local membership and token tests reveal whether the boundary functions correctly.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

ACH Return Codes Explained: R01 to R85 and How to Handle Them

ACH Return Codes Explained: R01 to R85 and How to Handle Them ACH Return Codes Explained: R01 to R85 and How to Handle Them When an ACH transfer fails, you don't get a generic "payment declined"…

  • R01 represents insufficient funds in ACH transfers, accounting for 30% of failures
  • R03 indicates no account or invalid account number, requiring permanent failure handling
  • R04 signifies invalid account number format, necessitating validation before submission

CODESYS Applied Practice — Axes (Part 1)

Environment: CODESYS V3.5 SP22 | Target: CODESYS Control Win V3 x64 simulation Overview The previous lesson built a minimal host/controller loop: three axes that were hand-rolled — FB_SimAxis parsed…

  • Axes in motion control explained using CODESYS environment
  • Motion control functions blocks share common timing structure
  • CiA 402 standard enables same program on simulated and hardware targets

Building CivicGemma: A Tamper-Evident E-Voting Microservices Platform with Gemma 4 🗳️

🚀 TL;DR During Hacktoberfest Hack Day Bhubaneswar × DatrixLabs , I built CivicGemma — an open-source, full-stack microservices e-voting pilot system designed specifically for local body elections…

  • CivicGemma is an open-source e-voting system built on microservices for local body elections.
  • Platform uses Java 21, Spring Boot 3.4, Angular 22, and Gemma 4 multimodal AI.
  • CivicGemma addresses paper ballot inefficiencies, double-voting risks, and information asymmetry.

Let the browser set the multipart boundary for an image upload

Leave Content-Type unset in the request options when fetch() sends FormData . The browser adds the multipart boundary needed by that body.

  • Browser automatically adds multipart boundary for image upload.
  • Create FormData object and append image file to it.
  • Manually specifying Content-Type removes browser's added boundary.

# 🛡️ Building an Enterprise AML/CFT Risk Intelligence Platform with Gemma 4

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine What I Built I built Risk-Gemma4-Agent , an enterprise-grade Anti-Money Laundering (AML) and…

  • Enterprise AML/CFT risk intelligence platform named Risk-Gemma4-Agent developed
  • Built using Google's open-weight Gemma 4 model and LangChain Vector RAG
  • Ensures 100% data residency and privacy compliance with DPDP Act

More from Saturday 31 October →