News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu

Same username is allowed in registration if letter case differs (Postgres)

Started by lwiz, March 01, 2018, 07:13:33 AM

Previous topic - Next topic

lwiz

New users could register the same username in our forums if they used different case in letters - for example user and User. The problem is Postgres specific I reckon and for a quick and dirty fix I changed line 970 (the SELECT under // Make sure they don't want someone else's name.) as follows:

AND ') . '(LOWER(real_name) LIKE LOWER({string:check_name}) OR LOWER(member_name) LIKE LOWER({string:check_name}))

As this is Postgres specific, it does have impact for a very few boards, but I deem it serious enough to report as it can be used maliciously.

-Lwiz

albertlast

In smf 2.1 is this fix already included: https://github.com/SimpleMachines/SMF2.1/blob/release-2.1/Sources/Subs-Members.php#L914


// Make sure they don't want someone else's name.
$request = $smcFunc['db_query']('', '
SELECT id_member
FROM {db_prefix}members
WHERE ' . (empty($current_ID_MEMBER) ? '' : 'id_member != {int:current_member}
AND ') . '({raw:real_name} {raw:operator} LOWER({string:check_name}) OR {raw:member_name} {raw:operator} LOWER({string:check_name}))
LIMIT 1',
array(
'real_name' => $smcFunc['db_case_sensitive'] ? 'LOWER(real_name)' : 'real_name',
'member_name' => $smcFunc['db_case_sensitive'] ? 'LOWER(member_name)' : 'member_name',
'current_member' => $current_ID_MEMBER,
'check_name' => $checkName,
'operator' => $operator,
)
);

lwiz


albertlast


Advertisement: