News for hackers. Stuff that matters.
Re:Using Gooey as a Universal Front End for Any Language or ... by tomc1985 on Monday September 23, 2019 @12:16AM (#21045875)
By burying them in the framework....
Re:Using Gooey as a Universal Front End for Any Language or ... by HelloNurse on Monday September 23, 2019 @07:28AM (#21047826)
Yes, exactly, just like database query processing in ORM systems and the like "buries" SQL injection countermeasures in a single place. It's a good thing.
Re:Using Gooey as a Universal Front End for Any Language or ... by TeMPOraL on Monday September 23, 2019 @07:43AM (#21047912)
There's abstraction confusion here, though. All SQL injection countermeasures and all it would take to protect the above CLI call is respecting the actual language you're using. That is, not gluing a query/command from strings.

Starting a subprocess via shell is could in particular be solved by a simple API of the form of:

  system('yourapp', ['option1', {'option2' : 'something'}]);
in your favourite language. Handling pipes and redirects gets more complex, but I see no prima facie reason why it couldn't look like this:

  pipe(system('yourapp', ['option1', {'option2' : 'something'}]),
       system('grep', ['n', 'i', 'foobar']),
       system('somethingelse', [], null, file("/dev/null")));
Re:Using Gooey as a Universal Front End for Any Language or ... by account42 on Tuesday September 24, 2019 @07:30AM (#21058769)
This assumes the --option=value syntax which while a de-facto standard on Unix-like systems is unfortunately not supported by all programs.

I agree that system() (in C and other langues that simply copied it) is a bad API. For shell escaping a command to start a process with a list of arguments would be enough, and even POSIX C has you covered there with vararg and array variants. [1]

[1] http://man7.org/linux/man-pages/man3/posix_spawn.3.html (or fork() + exec())