C'est ma première fois en PHP et ma première fois avec Joomla. Je viens d'un milieu lourd non Web C # / .Net.
J'ai écrit un module Joomla personnalisé qui interagit avec un WebService tiers via nuSoap.
Tout cela fonctionne très bien si je lance simplement les fichiers .php dans mon propre environnement PHP non Joomla sur ma machine de développement.
Cependant, si je comprends bien, Joomla bloque toutes les demandes à tout sauf index.php
, est-ce correct?
Comment autoriser l'accès direct à mon propre fichier .php?
voici un exemple de la façon dont je le demande à partir du javascript côté client à l'aide de jQuery:
$.ajax({
url: 'MyFile.php',
type: 'POST',
data: { ... },
success: function(data, status) {
....
où MyFile.php est actuellement situé physiquement à /htdocs/modules/mod_mymodule/MyFile.php
Je sais que le fait d'autoriser des demandes directes à ce fichier peut présenter un risque pour la sécurité, mais je dois le faire fonctionner dès que possible et je m'occuperai des problèmes de sécurité ultérieurement.
la source
url: '/modules/mod_mymodule/MyFile.php',
Réponses:
En règle générale, la seule chose qui empêche l'accès direct à un fichier joomla est une ligne en haut du fichier:
Si ce n'est pas déjà en haut du fichier, vous ne devriez avoir aucun problème à accéder directement au fichier.
La redirection de fichier htaccess a déjà des conditions pour ne pas rediriger si le fichier ou le dossier existe:
Sinon, vous ne pourrez pas charger de fichiers javascript ou css!
Donc, tout ce que vous devez réellement faire est de supprimer cette ligne du haut du fichier et vous devriez pouvoir accéder directement au fichier.
La plus grande chose à noter est qu'aucune des classes Joomla ne sera chargée, vous devez donc exécuter ce fichier en tant que fichier autonome (ce que vous faites déjà.)
Pour autant que je sache, il ne devrait pas y avoir de risque de sécurité inhérent à accéder directement à un fichier php, tant que c'est le comportement prévu. Étant donné que la majorité des fichiers dans Joomla supposent qu'ils ne seront pas accessibles directement, il est préférable de bloquer cet accès direct. Dans votre cas, vous avez l'intention d'accéder directement à ce code, donc aucun risque inhérent. Vous pouvez avoir d'autres risques pour la sécurité en acceptant les données POST et en ne les filtrant pas correctement ou autre (ce qui est plus facile si vous laissez Joomla le faire pour vous), mais cela n'a aucun rapport avec l'accès direct ou non au fichier.
la source
com_ajax
mais depuis que je suis totalement nouveau sur Joomla (et PHP tout à fait), je voulais une solution rapide qui ne nécessite pas d'implémenter des choses supplémentaires. Maintenant que vous mentionnez quenone of the Joomla classes will be loaded
je me rends compte que ce n'est pas une bonne solution à mon problème. À moins qu'il n'y ait un moyen de "charger" manuellement le framework Joomla à la demande à partir de mon propre fichier .php autonome?$user = JFactory::getUser()
devrait donc fonctionner pour vous obtenir les informations de l'utilisateur actuel.Une solution alternative,
Si vous avez développé le module dans la structure Joomla appropriée , au lieu d'inclure le framework Core Joomla dans le fichier module, vous pouvez l'utiliser
com_ajax
pourajax
appeler le module ou le plugin.Si vous travaillez avec des services Web et prévoyez de l'utiliser dans de nombreux sites, la création d'un module / plugin Joomla est si simple et peut être effectuée via ajax et l'installation de ce module / plugin est assez simple comme toutes les autres extensions Joomla.
Une documentation détaillée peut être trouvée ici . De plus, si vous utilisez une ancienne version de Joomla, un composant est disponible pour réaliser l' interface Ajax. .
Cette fonctionnalité Ajax est intégrée à la version J3.2 et au-dessus, donc la version ci-dessous devrait utiliser ces composants.
J'espère que cela aura du sens!
la source