Lieferadresse kann von anderem User übernommen werden

Hallo zusammen,

es ist aus meiner Sicht zwar nicht extrem kritisch, aber ich wollte es dennoch angebracht haben:

Mir ist aufgefallen, dass man die Lieferadresse anderer Nutzer übernehmen kann. Dazu sind nur die folgenden Schritte nötig:

  1. Man geht in den Bereich “RECHNUNGS- UND LIEFEREINSTELLUNGEN”
  2. Man öffnet den Editiermodus für die eigene Lieferadresse.
  3. Man trägt in der Option ausgewählten Adresse als Value eine fremde Address-ID ein.
  4. Man klickt auf Speichern.

Dadurch wird die oxuserid der Adresse geändert und der vorherige Besitzer hat eine Lieferadresse weniger…

Die einfachste Lösung wäre in der Funktion _assignAddress im oxuser-Model zu prüfen ob die anzupassende Adresse die User-ID des aktuellen Nutzers hat.
Zum Beispiel so:


protected function _assignAddress( $aDelAddress ) {
	if ( is_array( $aDelAddress ) && count( $aDelAddress ) ) {

		$sAddressId = $this->getConfig()->getRequestParameter( 'oxaddressid' );
		$sAddressId = ( $sAddressId === null || $sAddressId == -1 || $sAddressId == -2 ) ?  null : $sAddressId;

		$oAddress = oxNew( 'oxaddress' );
		$oAddress->setId( $sAddressId );
		$oAddress->load( $sAddressId );
		$oAddress->assign( $aDelAddress );
		
		$oAddressUserId = $oAddress->oxaddress__oxuserid->value;
		
		if($oAddressUserId == null || $oAddressUserId == $this->getId()) {
			$oAddress->oxaddress__oxuserid  = new oxField( $this->getId(), oxField::T_RAW );
			$oAddress->oxaddress__oxcountry = $this->getUserCountry( $oAddress->oxaddress__oxcountryid->value );
			$oAddress->save();
		}
		// resetting addresses
		$this->_aAddresses = null;

		// saving delivery Address for later use
		oxSession::setVar( 'deladrid', $oAddress->getId() );
	} else {
		// resetting
		oxSession::setVar( 'deladrid', null );
	}
}

Hallo mkoch_kp,

ich kann das ab dem 3. Punkt grad nicht nachvollziehen. Kannst Du uns das nochmal (vielleicht auch mit ein paar Screenshots, am besten gleich in Englisch) an die security@ schicken? Auch wenn das nur ein sehr geringes Sicherheitsrisiko sein sollte, hat es doch nichts im Forum zu suchen :wink:

Danke und Gruß