gerzson         Mon Feb  4 06:51:23 2002 EDT

  Modified files:              
    /phpdoc/en/chapters security.xml 
  Log:
  some spelling errors and typos corrected
  
Index: phpdoc/en/chapters/security.xml
diff -u phpdoc/en/chapters/security.xml:1.42 phpdoc/en/chapters/security.xml:1.43
--- phpdoc/en/chapters/security.xml:1.42        Mon Jan 21 09:36:58 2002
+++ phpdoc/en/chapters/security.xml     Mon Feb  4 06:51:22 2002
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="iso-8859-1"?>
-<!-- $Revision: 1.42 $ -->
+<!-- $Revision: 1.43 $ -->
  <chapter id="security">
   <title>Security</title>
 
@@ -570,13 +570,13 @@
    <sect2 id="security.database.storage">
     <title>Encrypted Storage Model</title>
     <simpara>
-     SSL/SSH protects data traveling from the client to the server, SSL/SSH
+     SSL/SSH protects data travelling from the client to the server, SSL/SSH
      does not protect the persistent data stored in a database. SSL is an
      on-the-wire protocol.
     </simpara>
     <simpara>
      Once an attacker gains access to your database directly (bypassing the
-     webserver), the stored sensitive data may be exposed or misused unless,
+     webserver), the stored sensitive data may be exposed or misused, unless
      the information is protected by the database itself. Encrypting the data
      is a good way to mitigate this threat, but very few databases offer this
      type of data encryption.
@@ -613,7 +613,7 @@
 $result = pg_exec($connection, $query);
 
 if (pg_numrows($result) > 0) {
-    echo "Wellcome, $username!";
+    echo "Welcome, $username!";
 }
 else {
     echo "Authentication failed for $username.";
@@ -653,8 +653,9 @@
 <![CDATA[
 $offset = argv[0]; // beware, no input validation!
 $query  = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
+// with PostgreSQL 
 $result = pg_exec($conn, $query);
-// with MySQL:
+// with MySQL
 $result = mysql_query($query);
 ]]>
       </programlisting>
@@ -663,22 +664,18 @@
       is encoded into the URL. The script expects that the incoming
       <varname>$offset</varname> is decimal number. However, someone tries to
       break in with appending <function>urlencode</function>'d form of the
-      following to the URL (PostgreSQL):
+      following to the URL 
       <informalexample>
        <programlisting>
 <![CDATA[
+// in case of PostgreSQL
 0;
 insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
     select 'crack', usesysid, 't','t','crack'
     from pg_shadow where usename='postgres';
 --
-]]>
-       </programlisting>
-      </informalexample>
-      or in case of using MySQL:
-      <informalexample>
-       <programlisting>
-<![CDATA[
+
+// in case of MySQL
 0;
 UPDATE user SET Password=PASSWORD('crack') WHERE user='root';
 FLUSH PRIVILEGES;
@@ -698,13 +695,14 @@
     </note>
     <para>
      A feasible way to gain passwords is to circumvent your search result pages.
-     What the attacker has to do is only trying if there is a submitted filter
-     setting handled not properly. These filters are commonly set in a previous
-     form to customize <literal>WHERE, ORDER BY, LIMIT and OFFSET</literal>
-     clauses in <literal>SELECT</literal> statements. If your database supports
-     the <literal>UNION</literal> construct, the attacker may try to append an
-     entire query to the original one to list passwords from an arbitrary table.
-     Using encrypted password fields is strongly encouraged.
+     What the attacker needs only is to try if there is any submitted variable
+     used in SQL statement which is not handled properly. These filters can be set 
+     commonly in a preceding form to customize <literal>WHERE, ORDER BY, 
+     LIMIT</literal> and <literal>OFFSET</literal> clauses in 
+<literal>SELECT</literal>
+     statements. If your database supports the <literal>UNION</literal> construct, 
+     the attacker may try to append an entire query to the original one to list 
+     passwords from an arbitrary table. Using encrypted password fields is 
+     strongly encouraged.
      <example>
       <title>
        Listing out articles ... and some passwords (any database server)
@@ -714,6 +712,7 @@
 $query  = "SELECT id, name, inserted, size FROM products
                   WHERE size = '$size'
                   ORDER BY $order LIMIT $limit, $offset;";
+$result = odbc_exec($conn, $query);
 ]]>
       </programlisting>
      </example>
@@ -760,6 +759,7 @@
 <![CDATA[
 // $uid == ' or uid like'%admin%'; --
 $query = "UPDATE usertable SET pwd='...' WHERE uid='' or uid like '%admin%'; --";
+
 // $pwd == "hehehe', admin='yes', trusted=100 "
 $query = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE ...;"
 ]]>
@@ -844,7 +844,7 @@
       </listitem>
       <listitem>
        <para>
-        If the application waits for numeric input, consider to verify data
+        If the application waits for numerical input, consider to verify data
         with <function>is_numeric</function>, or silently change its type
         using <function>settype</function>, or use its numeric representation
         by <function>sprintf</function>.
@@ -874,7 +874,7 @@
       <listitem>
        <simpara>
         Do not print out any database specific information, especially
-        about the schema, no matter what happens. See also <link
+        about the schema, by fair means or foul. See also <link
         linkend="security.errors">Error Reporting</link> and <link
         linkend="ref.errorfunc">Error Handling and Logging Functions</link>.
        </simpara>


Reply via email to