demandes Encoded
Vous pouvez faire les détails de la demande effectivement invisible à l'mécréant occasionnel en codant la quasi-totalité de l'URL et le décodage du côté serveur détails de la demande.
Les détails de la demande incluent l'action que vous souhaitez effectuer ainsi que les paramètres relatifs à cette action.
Toutes les demandes seraient envoyées à une seule URL, où un processus côté serveur décoderait les détails de la demande et effectuerait l'action appropriée selon les besoins.
Exemple
URL d'origine:
/ajax/delete.php?parameter1=foo & paramètre2 = bar
Détails de la demande:
action = supprimer & paramètre1 = foo & paramètre2 = bar
détails de la demande codés (codé à l'aide de base64):
YWN0aW9uPWRlbGV0ZSZwYXJhbWV0ZXIxPWZvbyZwYXJhbWV0ZXIyPWJhcg ==
URL encodée:
/ajax/request = YWN0aW9uPWRlbGV0ZSZwYXJhbWV0ZXIxPWZvbyZwYXJhbWV0ZXIyPWJhcg ==
Je ne crois pas qu'il y ait une fonctionnalité native pour encoder base64 en JavaScript, mais il est loin d'être impossible de trouver une méthode appropriée? ou pour écrire le vôtre. Avec le JavaScript client obfusqué/minifié, il serait assez difficile pour quelqu'un de déterminer comment faire une demande «à la main».
Cacher la mise en œuvre détails
Il y a un certain nombre de pratiques que vous pouvez suivre pour rendre moins votre application susceptible d'être attaquée par une mauvaise utilisation des URL.
Commençons par une URL de: ajax/fetchDepartment.php?s = départements & company_id = 99
Il n'y a pas besoin de révéler ce que la technologie côté serveur que vous utilisez (PHP), ni par la chaîne de requête (sec, company_id), quelles sont les valeurs de chaîne de requête fait signifie.
Occultant la technologie côté serveur
En supposant que vous avez index.php
défini par défaut, les URL suivantes sont équivalentes:
ajax/fetchDepartment.php?sec=departments&company_id=99
ajax/fetchDepartment/index.php?sec=departments&company_id=99
ajax/fetchDepartment/?sec=departments&company_id=99
La troisième URL ne révèle pas la technologie côté serveur que vous utilisez. Cela limite la gamme des attaques possibles. Cela vous permet également de passer à une autre technologie côté serveur sans modifier vos URL.
Hiding le sens de la demande paramètres
ajax/fetchDepartment/?sec=departments&company_id=99
ajax/99/departments/
Cette dernière URL transmet encore suffisamment d'informations pour effectuer la demande sans révéler ce que les moyens d'information.
Alors que quelqu'un pourrait encore changer les valeurs, il ne saura pas ce qu'il change. Cela rendra plus difficile pour un attaquant d'évaluer et de comprendre le résultat de toute modification d'URL qu'il effectue.
Très belle réponse, merci. –