Re: VMS x86-64 database server

Liste des GroupesRevenir à co vms 
Sujet : Re: VMS x86-64 database server
De : arne (at) *nospam* vajhoej.dk (Arne Vajhøj)
Groupes : comp.os.vms
Date : 09. Jul 2025, 02:54:20
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <104ki4c$3r3fl$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13
User-Agent : Mozilla Thunderbird
On 7/8/2025 7:38 PM, Lawrence D'Oliveiro wrote:
On Tue, 8 Jul 2025 18:40:31 -0400, Arne Vajhøj wrote:
Dynamically creating SQL string where the dynamic part is for data is a
security disaster waiting to happen (and possible poor performance as
well).
 That’s a pretty naïve statement to make.
 Quoting literal data in standard SQL is quite simple: turn the data into a
string literal with single quotation marks, and any embedded single
quotation marks are written twice. That’s it. Every other character can be
represented as itself, literally.
It is an assumption that all developers remember to do it right. Problem
is that developers are humans - they make mistakes. Not every time. If
they are okay then not even often. But a few times. If there are 1000
places in the code where escape should be used, then there is a pretty
good chance that it will be forgotten at least 1 time.
There is a reason why OWASP when it comes to preventing SQL injection
states:
<quote>
Defense Option 4: STRONGLY DISCOURAGED: Escaping All User-Supplied Input
</quote>
Furthermore the escape problem is a little more tricky than
what you describe.
Very few API's does not allow prepare/parameters, but a few
wellknown examples do exist: the recently discussed DBLIB (which
is one of the reasons why it was replaced by CTLIB in 1993 - 32
years ago) and the old PHP mysql extension (replaced by mysqli
extension in 2004 and PDO in 2005).
Because mysql extension did not support prepare/parameters
they first added a mysql_escape_string function to do what one
think should be done.
$s = mysql_escape_string($s);
But clever people found out that the argument list was
wrong.
It should have connection reference to correctly handle
escape with various more exotic character set. So
mysql_real_escape_string function was invented.
$s = mysql_real_escape_string($s, $con);
For those that still have PHP 5.x and a MySQL old enough
to work with PHP 5.x then try:
<?php
error_reporting(E_ERROR);
$con = mysql_connect('192.168.0.10', 'root', '');
mysql_select_db('test', $con);
// nothing - all good
$s = 'BB';
$rs = mysql_query("SELECT COUNT(*) AS n FROM t1 WHERE f2 = '$s'", $con);
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
echo 'nothing - all good: ' . $row['n'] . "\r\n";
// nothing - injection attempt
$s = "BB' OR '1'='1";
$rs = mysql_query("SELECT COUNT(*) AS n FROM t1 WHERE f2 = '$s'", $con);
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
echo 'nothing - injection attempt: ' . $row['n'] . "\r\n";
// bad escape - all good
$s = 'BB';
$s = mysql_escape_string($s);
$rs = mysql_query("SELECT COUNT(*) AS n FROM t1 WHERE f2 = '$s'", $con);
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
echo 'escape - all good: ' . $row['n'] . "\r\n";
// bad escape - injection attempt
$s = "BB' OR '1'='1";
$s = mysql_escape_string($s);
$rs = mysql_query("SELECT COUNT(*) AS n FROM t1 WHERE f2 = '$s'", $con);
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
echo 'bad escape - injection attempt: ' . $row['n'] . "\r\n";
// bad escape - serious injection attempt
mysql_set_charset('GBK', $con);
$s = "BB\xbf\x27 OR 1=1 #";
$s = mysql_escape_string($s);
$rs = mysql_query("SELECT COUNT(*) AS n FROM t1 WHERE CONVERT(f2 USING GBK) = '$s'", $con);
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
echo 'bad escape - serious injection attempt: ' . $row['n'] . "\r\n";
// correct escape - serious injection attempt
mysql_set_charset('GBK', $con);
$s = "BB\xbf\x27 OR 1=1 #";
$s = mysql_real_escape_string($s, $con);
$rs = mysql_query("SELECT COUNT(*) AS n FROM t1 WHERE CONVERT(f2 USING GBK) = '$s'", $con);
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
echo 'correct escape - serious injection attempt: ' . $row['n'] . "\r\n";
// fucked up correct escape - serious injection attempt
mysql_set_charset('latin1', $con); // we have to reset
mysql_query('SET NAMES GBK');
$s = "BB\xbf\x27 OR 1=1 #";
$s = mysql_real_escape_string($s, $con);
$rs = mysql_query("SELECT COUNT(*) AS n FROM t1 WHERE CONVERT(f2 USING GBK) = '$s'", $con);
$row = mysql_fetch_array($rs, MYSQL_ASSOC);
echo 'fucked up correct escape - serious injection attempt: ' . $row['n'] . "\r\n";
mysql_close($con);
?>
nothing - all good: 1
nothing - injection attempt: 3
escape - all good: 1
bad escape - injection attempt: 0
bad escape - serious injection attempt: 3
correct escape - serious injection attempt: 0
fucked up correct escape - serious injection attempt: 3
If you escape manually then you will live to regret it.
Arne

Date Sujet#  Auteur
6 Jul20:45 * VMS x86-64 database server61Arne Vajhøj
6 Jul22:39 +- Re: VMS x86-64 database server1Lawrence D'Oliveiro
6 Jul23:07 +* Re: VMS x86-64 database server34Arne Vajhøj
7 Jul00:19 i`* Re: VMS x86-64 database server33Lawrence D'Oliveiro
7 Jul00:58 i `* Re: VMS x86-64 database server32Arne Vajhøj
7 Jul03:42 i  `* Re: VMS x86-64 database server31Lawrence D'Oliveiro
7 Jul19:07 i   `* Re: VMS x86-64 database server30Arne Vajhøj
7 Jul19:16 i    +* Re: VMS x86-64 database server2Arne Vajhøj
7 Jul19:21 i    i`- Re: VMS x86-64 database server1Arne Vajhøj
7 Jul23:07 i    `* Re: VMS x86-64 database server27Lawrence D'Oliveiro
8 Jul00:28 i     +* Re: VMS x86-64 database server14Arne Vajhøj
8 Jul01:26 i     i`* Re: VMS x86-64 database server13Lawrence D'Oliveiro
8 Jul13:45 i     i `* Re: VMS x86-64 database server12Arne Vajhøj
8 Jul22:57 i     i  `* Re: VMS x86-64 database server11Lawrence D'Oliveiro
8 Jul23:40 i     i   `* Re: VMS x86-64 database server10Arne Vajhøj
9 Jul00:38 i     i    `* Re: VMS x86-64 database server9Lawrence D'Oliveiro
9 Jul02:54 i     i     `* Re: VMS x86-64 database server8Arne Vajhøj
9 Jul08:25 i     i      `* Re: VMS x86-64 database server7Lawrence D'Oliveiro
9 Jul20:33 i     i       `* Re: VMS x86-64 database server6Arne Vajhøj
10 Jul00:07 i     i        `* Re: VMS x86-64 database server5Lawrence D'Oliveiro
10 Jul00:51 i     i         `* Re: VMS x86-64 database server4Arne Vajhøj
10 Jul02:21 i     i          `* Re: VMS x86-64 database server3Lawrence D'Oliveiro
10 Jul03:24 i     i           `* Re: VMS x86-64 database server2Arne Vajhøj
10 Jul05:28 i     i            `- Re: VMS x86-64 database server1Lawrence D'Oliveiro
8 Jul14:35 i     `* Re: VMS x86-64 database server12Arne Vajhøj
8 Jul22:56 i      `* Re: VMS x86-64 database server11Lawrence D'Oliveiro
8 Jul23:20 i       `* Re: VMS x86-64 database server10Arne Vajhøj
9 Jul00:37 i        `* Re: VMS x86-64 database server9Lawrence D'Oliveiro
9 Jul01:31 i         `* Re: VMS x86-64 database server8Arne Vajhøj
9 Jul08:22 i          `* Re: VMS x86-64 database server7Lawrence D'Oliveiro
10 Jul01:04 i           `* Re: VMS x86-64 database server6Arne Vajhøj
10 Jul01:25 i            +* Re: VMS x86-64 database server4Arne Vajhøj
10 Jul02:35 i            i`* Re: VMS x86-64 database server3Lawrence D'Oliveiro
10 Jul03:26 i            i `* Re: VMS x86-64 database server2Arne Vajhøj
10 Jul06:48 i            i  `- Re: VMS x86-64 database server1Lawrence D'Oliveiro
10 Jul02:33 i            `- Re: VMS x86-64 database server1Lawrence D'Oliveiro
6 Jul23:11 +- Re: VMS x86-64 database server1Arne Vajhøj
6 Jul23:39 `* Re: VMS x86-64 database server24Craig A. Berry
7 Jul00:57  `* Re: VMS x86-64 database server23Arne Vajhøj
7 Jul15:50   `* Re: VMS x86-64 database server22Mark Berryman
7 Jul19:01    `* Re: VMS x86-64 database server21Arne Vajhøj
7 Jul22:06     `* Re: VMS x86-64 database server20Mark Berryman
7 Jul22:36      +* Re: VMS x86-64 database server2Arne Vajhøj
7 Jul22:37      i`- Re: VMS x86-64 database server1Arne Vajhøj
7 Jul23:08      `* Re: VMS x86-64 database server17Lawrence D'Oliveiro
8 Jul00:21       `* Re: VMS x86-64 database server16Arne Vajhøj
8 Jul01:27        `* Re: VMS x86-64 database server15Lawrence D'Oliveiro
8 Jul12:14         `* Re: VMS x86-64 database server14Arne Vajhøj
8 Jul22:58          `* Re: VMS x86-64 database server13Lawrence D'Oliveiro
8 Jul23:14           +* Re: VMS x86-64 database server10Arne Vajhøj
9 Jul00:40           i`* Re: VMS x86-64 database server9Lawrence D'Oliveiro
9 Jul03:18           i `* Re: VMS x86-64 database server8Arne Vajhøj
9 Jul08:27           i  +- Re: VMS x86-64 database server1Lawrence D'Oliveiro
9 Jul11:16           i  `* Re: VMS x86-64 database server6hb0815
9 Jul15:13           i   `* Re: VMS x86-64 database server5Arne Vajhøj
9 Jul17:51           i    `* Re: VMS x86-64 database server4hb0815
9 Jul18:39           i     `* Re: VMS x86-64 database server3Arne Vajhøj
9 Jul18:56           i      +- Re: VMS x86-64 database server1Chris Townley
9 Jul20:55           i      `- Re: VMS x86-64 database server1hb0815
10 Jul01:12           `* Re: VMS x86-64 database server2bill
10 Jul13:00            `- Re: VMS x86-64 database server1Dan Cross

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal