173 lines
3.3 KiB
HTML
173 lines
3.3 KiB
HTML
|
<HTML
|
||
|
><HEAD
|
||
|
><TITLE
|
||
|
>Call Only Interfaces Intended for Programmers</TITLE
|
||
|
><META
|
||
|
NAME="GENERATOR"
|
||
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
||
|
REL="HOME"
|
||
|
TITLE="Secure Programming for Linux and Unix HOWTO"
|
||
|
HREF="index.html"><LINK
|
||
|
REL="UP"
|
||
|
TITLE="Carefully Call Out to Other Resources"
|
||
|
HREF="call-out.html"><LINK
|
||
|
REL="PREVIOUS"
|
||
|
TITLE="Handle Metacharacters"
|
||
|
HREF="handle-metacharacters.html"><LINK
|
||
|
REL="NEXT"
|
||
|
TITLE="Check All System Call Returns"
|
||
|
HREF="check-returns.html"></HEAD
|
||
|
><BODY
|
||
|
CLASS="SECT1"
|
||
|
BGCOLOR="#FFFFFF"
|
||
|
TEXT="#000000"
|
||
|
LINK="#0000FF"
|
||
|
VLINK="#840084"
|
||
|
ALINK="#0000FF"
|
||
|
><DIV
|
||
|
CLASS="NAVHEADER"
|
||
|
><TABLE
|
||
|
SUMMARY="Header navigation table"
|
||
|
WIDTH="100%"
|
||
|
BORDER="0"
|
||
|
CELLPADDING="0"
|
||
|
CELLSPACING="0"
|
||
|
><TR
|
||
|
><TH
|
||
|
COLSPAN="3"
|
||
|
ALIGN="center"
|
||
|
>Secure Programming for Linux and Unix HOWTO</TH
|
||
|
></TR
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="10%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="bottom"
|
||
|
><A
|
||
|
HREF="handle-metacharacters.html"
|
||
|
ACCESSKEY="P"
|
||
|
>Prev</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="80%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="bottom"
|
||
|
>Chapter 8. Carefully Call Out to Other Resources</TD
|
||
|
><TD
|
||
|
WIDTH="10%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="bottom"
|
||
|
><A
|
||
|
HREF="check-returns.html"
|
||
|
ACCESSKEY="N"
|
||
|
>Next</A
|
||
|
></TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
><HR
|
||
|
ALIGN="LEFT"
|
||
|
WIDTH="100%"></DIV
|
||
|
><DIV
|
||
|
CLASS="SECT1"
|
||
|
><H1
|
||
|
CLASS="SECT1"
|
||
|
><A
|
||
|
NAME="CALL-INTENTIONAL-APIS"
|
||
|
></A
|
||
|
>8.4. Call Only Interfaces Intended for Programmers</H1
|
||
|
><P
|
||
|
>Call only application programming interfaces (APIs) that are
|
||
|
intended for use by programs.
|
||
|
Usually a program can invoke any other program,
|
||
|
including those that are really designed for human interaction.
|
||
|
However, it's usually unwise to invoke a program intended for human
|
||
|
interaction in the same way a human would.
|
||
|
The problem is that programs's human interfaces are intentionally rich
|
||
|
in functionality and are often difficult to completely control.
|
||
|
As discussed in <A
|
||
|
HREF="handle-metacharacters.html"
|
||
|
>Section 8.3</A
|
||
|
>,
|
||
|
interactive programs often have ``escape'' codes,
|
||
|
which might enable an attacker to perform undesirable functions.
|
||
|
Also, interactive programs often try to intuit the ``most likely'' defaults;
|
||
|
this may not be the default you were expecting, and an attacker may find
|
||
|
a way to exploit this.</P
|
||
|
><P
|
||
|
>Examples of programs you shouldn't normally call directly include
|
||
|
mail, mailx, ed, vi, and emacs.
|
||
|
At the very least, don't call these without checking
|
||
|
their input first.</P
|
||
|
><P
|
||
|
>Usually there are parameters to give you safer access to the program's
|
||
|
functionality,
|
||
|
or a different API or application that's intended for use by programs;
|
||
|
use those instead.
|
||
|
For example, instead of invoking a text editor to edit some text
|
||
|
(such as ed, vi, or emacs), use sed where you can.</P
|
||
|
></DIV
|
||
|
><DIV
|
||
|
CLASS="NAVFOOTER"
|
||
|
><HR
|
||
|
ALIGN="LEFT"
|
||
|
WIDTH="100%"><TABLE
|
||
|
SUMMARY="Footer navigation table"
|
||
|
WIDTH="100%"
|
||
|
BORDER="0"
|
||
|
CELLPADDING="0"
|
||
|
CELLSPACING="0"
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="handle-metacharacters.html"
|
||
|
ACCESSKEY="P"
|
||
|
>Prev</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="34%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="index.html"
|
||
|
ACCESSKEY="H"
|
||
|
>Home</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="check-returns.html"
|
||
|
ACCESSKEY="N"
|
||
|
>Next</A
|
||
|
></TD
|
||
|
></TR
|
||
|
><TR
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="left"
|
||
|
VALIGN="top"
|
||
|
>Handle Metacharacters</TD
|
||
|
><TD
|
||
|
WIDTH="34%"
|
||
|
ALIGN="center"
|
||
|
VALIGN="top"
|
||
|
><A
|
||
|
HREF="call-out.html"
|
||
|
ACCESSKEY="U"
|
||
|
>Up</A
|
||
|
></TD
|
||
|
><TD
|
||
|
WIDTH="33%"
|
||
|
ALIGN="right"
|
||
|
VALIGN="top"
|
||
|
>Check All System Call Returns</TD
|
||
|
></TR
|
||
|
></TABLE
|
||
|
></DIV
|
||
|
></BODY
|
||
|
></HTML
|
||
|
>
|