Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 46069
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T15:54:29+00:00 2026-05-10T15:54:29+00:00

We’re currently building an application that executes a number of external tools. We often

  • 0

We’re currently building an application that executes a number of external tools. We often have to pass information entered into our system by users to these tools.

Obviously, this is a big security nightmare waiting to happen.

Unfortunately, we’ve not yet found any classes in the .NET Framework that execute command line programs while providing the same kind of guards against injection attacks as the IDbCommand objects do for databases.

Right now, we’re using a very primitive string substitution which I suspect is rather insufficient:

protected virtual string Escape(string value) {       return value         .Replace(@'\', @'\\')         .Replace(@'$', @'\$')         .Replace(@'''', @'\''')         .Replace('`', ''')       ; } 

What do you guys do to prevent command-line injection attacks? We’re planning to implement a regex that is very strict and only allows a very small subset of characters through, but I was wondering if there was a better way.

Some clarifications:

  • Some of these tools do not have APIs we can program against. If they did, we wouldn’t be having this problem.
  • The users don’t pick tools to execute, they enter meta-data which the tools we’ve chosen use (for example, injecting meta data such as copyright notices into target files).
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T15:54:30+00:00Added an answer on May 10, 2026 at 3:54 pm

    Are you executing the programs directly or going through the shell? If you always launch an external program by giving the full path name to the executable and leaving the shell out of the equation, then you aren’t really susceptible to any kind of command line injection.

    EDIT: DrFloyd, the shell is responsible for evaluating things like the backtick. No shell, no shell evaluation. Obviously, you’ve still got to be aware of any potential security gotchas in the programs that you’re calling — but I don’t think this question is about that.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 62k
  • Answers 62k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • added an answer I've tried your code without being able to reproduce any… May 11, 2026 at 10:05 am
  • added an answer Maybe something like this: If DataGridView1.RowCount > 0 Then Dim… May 11, 2026 at 10:05 am
  • added an answer I would suspect, that when you determine which resources require… May 11, 2026 at 10:05 am

Related Questions

We are developing a little application that given a directory with PDF files creates
We have been using CruiseControl for quite a while with NUnit and NAnt. For
We have a requirement in project to store all the revisions(Change History) for the
We have a remoting singleton server running in a separate windows service (let's call
We have an SVN repository running on a Windows server, and I want to
We currently maintain a suit of MFC applications that are fairly well designed, however
We have a Windows Server Web Edition 2003 Web Farm. What can we use
We have a situation where users are allowed to upload content, and then separately
We get a large amount of data from our clients in pdf files in
We have a SharePoint list setup with history enabled so the Comments field keeps

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.