it-swarm.dev

Come posso consentire l'accesso diretto al mio file .php personalizzato in un modulo Joomla da utilizzare da AJAX?

Questa è la mia prima volta in assoluto in PHP e la mia prima volta in assoluto con Joomla. Vengo da un pesante background non Web C #/.Net.

Ho scritto un modulo Joomla personalizzato che interagisce con un WebService di terze parti tramite nuSoap.

Tutto questo funziona alla grande se ho appena eseguito i file .php nel mio ambiente non Joomla PHP nella mia macchina di sviluppo.

Tuttavia, se capisco correttamente, Joomla blocca tutte le richieste a tutto tranne index.php, è corretto?

Come posso consentire l'accesso diretto al mio file .php?

questo è un esempio di come lo sto richiedendo dal javascript sul lato client usando jQuery:

$.ajax({
     url: 'MyFile.php',
     type: 'POST',
     data: { ... },
     success: function(data, status) {
          ....

dove MyFile.php si trova attualmente fisicamente in /htdocs/modules/mod_mymodule/MyFile.php

So che consentire richieste dirette a questo file potrebbe presentare un rischio per la sicurezza, tuttavia devo farlo funzionare al più presto e mi occuperò dei problemi di sicurezza in un momento successivo.

8

In genere l'unica cosa che impedisce l'accesso diretto a un file joomla è una riga nella parte superiore del file:

defined('_JEXEC') or die('Restricted access');

Se questo non è già nella parte superiore del file, non dovresti avere problemi ad accedere direttamente al file.

Il reindirizzamento del file htaccess ha già le condizioni per non reindirizzare se il file o la cartella esiste:

# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d

In caso contrario, non saresti in grado di caricare file javascript o css!

Quindi davvero tutto ciò che devi fare è rimuovere quella riga dalla parte superiore del file e dovresti essere in grado di accedere direttamente al file.

La cosa più importante da notare è che nessuna delle classi Joomla verrà caricata, quindi devi eseguire questo file come file autonomo (cosa che stai già facendo.)

Per quanto ne so, non dovrebbe esserci alcun rischio inerente alla sicurezza nell'accesso diretto a un file php, purché si tratti del comportamento previsto. Poiché la maggior parte dei file in Joomla presume che non saranno accessibili direttamente, è meglio bloccare tale accesso diretto. Nel tuo caso, intendi accedere direttamente a quel codice, quindi nessun rischio intrinseco. Potresti avere altri rischi per la sicurezza accettando POST dati e non filtrandoli correttamente o simili (che è più facile se lasci che Joomla lo faccia per te), ma ciò non è correlato al fatto che il file sia direttamente accessibile o no.

5
David Fritsch

Una soluzione alternativa,

Se il modulo è stato sviluppato correttamente struttura Joomla allora invece di includere il framework Core Joomla nel file del modulo puoi usare com_ajax per effettuare ajax chiamate al modulo o al plug-in.

Se stai lavorando con i servizi Web e prevedi di utilizzarlo in molti siti, è così semplice creare un modulo/plug-in Joomla e che può essere eseguito tramite ajax e l'installazione di questo modulo/plug-in è abbastanza semplice come qualsiasi altra estensione di joomla.

È possibile trovare una documentazione dettagliata qui , anche se si utilizza una versione precedente di Joomla è disponibile un componente per ottenere interfaccia Ajax. .

Questa funzione Ajax è integrata con la versione J3.2 e quindi la versione sotto dovrebbe usare questi componenti.

Spero abbia senso!

4
Jobin Jose