Re: Sanitise user input for a script

Liste des GroupesRevenir à cl python 
Sujet : Re: Sanitise user input for a script
De : simon.n.connah (at) *nospam* protonmail.com (Simon Connah)
Groupes : comp.lang.python
Date : 31. Aug 2024, 05:51:42
Autres entêtes
Message-ID : <mailman.21.1725079910.2917.python-list@python.org>
References : 1 2 3
Pièces jointes : signature.asc (application/pgp-signature)
On Friday, 30 August 2024 at 21:23, Peter J. Holzer via Python-list <python-list@python.org> wrote:

 

 

On 2024-08-30 19:18:29 +0000, Simon Connah via Python-list wrote:
 

I need to write a script that will take some user input (supplied on a
website) and then execute a Python script on a host via SSH. I'm
curious what the best options are for protecting against malicious
input in much the smae way as you sanitise SQL to protect against SQL
injections.
 

 

(Aside: Don't "sanitize" SQL. Use placeholders.)
 

I could do it either on the website itself or by doing it on the host
machine.
 

 

You will have to do it in the web site.
 

The SSH manual states:
 

| If supplied, the arguments will be appended to the command, separated by
| spaces, before it is sent to the server to be executed.
 

So whether you call
ssh myhost print_args a b c
or
ssh myhost print_args a "b c"
in both cases exactly the same string will be sent to myhost, and it
won't have any chance to distinguish them.
 

So you will either have to filter ("sanitize") the arguments or properly
quote them before invoking SSH.
 

If someone has any suggestions I'd appreciated it. If you need more
information then please let me know.
 

 

First, if there is any chance that your arguments can contain characters
with meaning to the shell (like an apostrophe in a name), get the
quoting correct. If you can, transmit those arguments in a different way
(e.g. as input, maybe just nul-separated, may as JSON, or whatever).
 

That removes the SSH-specific problems. There may still be problems with
the python script on the host.
 

Then, do all the validation you can on the web server. Reject all
requests which aren't valid. But be sure to check against the relevant
specifications, not your prejudices (You may not think that an
apostrophe in an email address is valid, but it is). Include meaningful
error messages (not just "input invalid"). Helping your legitimate users
is more important than slightly inconveniencing an attacker.
 


Thank you very much. That is very useful.

Simon.

Date Sujet#  Auteur
31 Aug 24 o Re: Sanitise user input for a script1Simon Connah

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal