Securitate Apelare functie dinamic in php din Ajax
Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
-
sterica
- Mesaje: 285
Securitate Apelare functie dinamic in php din Ajax
Salutare,
Am urmatorul cod js:
Cod: Selectaţi tot
function fetch_select(){
val_name = $('#name').val();
$.ajax({
type: 'POST',
url: 'include/get_db.inc.php',
data: {
name: val_name,
},
success: function (response) {
document.getElementById('higtchart_medie_gen').innerHTML=response;
columnChart( JSON.parse(response));
}
});
}
function columnChart(data_v){
if(data_v.length >0){
$(function () {
$('#higtchart_medie_gen').highcharts({
chart: {
type: 'column'
},
......
si functia php (in fisier sunt mai multe functii)
Cod: Selectaţi tot
<?php
function test_name () {
$ret = [];
if(isset($_POST['name'])){
$name = $_POST['name'];
$sql = "SELECT
......
WHERE ID = $name ";
$result = $conn->query($sql);
if($result->num_rows > 0){
while($row = $result->fetch_assoc()) {
$ret [] = [$row['NAME'] . ' ' . $row['LASTN'], floatval($row['AVGG'])];
}
}
}
if(count($ret) >1) echo json_encode($ret);
else echo 'Not working';
}
?>
Pentru a o putea apela am incercat ceva de genul:
in ajax la url am adaugat:
include/get_db.inc.php?action=test_name iar in php vreau sa adaug:
Cod: Selectaţi tot
$actions = ['nume_functie_1', 'nume_functie_2'];
if (isset($_GET['action']) && is_string($_GET['action']) && in_array($_GET['action'], $actions))) {
call_user_func($_GET['action'], $conn);
}
sau
switch($_GET['action']) {
case "nume_functie_1":
call_user_func($_GET['action'], $conn);
break;
case "nume_functie_2":
call_user_func($_GET['action'], $conn);
break;
// etc.
default:
// banez utilizatorul.
break;
}
Artificiul meu in creeaza o gaura in securitatea siteului. Nu ma pricep foarte bine la securitate php, cum as putea apela functia din php fara a-mi "gauri" siteul.
Multumesc!
MarPlo
Mesaje: 4343
Salut
Pentru o siguranta mai buna poti face asa:
1. Ca sa nu apara numele functiei in adresa de apelare, trimiti prin POST o referinta /cheie la numele ei setat in php.
Cod: Selectaţi tot
$.ajax({
type: 'POST',
url: 'include/get_db.inc.php',
data: {
name: val_name,
nf: 'f1'
}
//...
}
2. Iar in php asa:
Cod: Selectaţi tot
$actions =['f1'=>'nume_functie_1', 'f2'=>'nume_functie_2'];
if(isset($_POST['nf']) && isset($actions[$_POST['nf']])){
call_user_func($actions[$_POST['nf']], $conn);
}
sterica
Mesaje: 285
Super intelegenta miscare. Multumesc mult MarPlo
Subiecte similare
-
Formular dinamic cu jQuery
JavaScript - jQuery - Ajax
Primul mesaj
Salut
As dori sa fac un formular in care vreu sa pun pretul de transport in functie de greutate.
Si am greutatea minima , greutatea maxima ; cost...
Ultimul mesaj
La refresh nu raman fiindca nu sunt salvate undeva pentru a fi preluate.
Ca sa ramana si la refresh e necesar sa le salvezi intr-o baza de date,...
-
Post cu Ajax in modal
JavaScript - jQuery - Ajax
Primul mesaj
Bună ziua,
Vreau să trimit în aceeași pagină dar în modal două id-uri. Prin alert(id) îmi arată conținutul postului trimis dar în modal nu imi...
Ultimul mesaj
Nu prea inteleg mecanismul si ce anume nu functioneaza.
Oricum, daca functioneaza cand pui manual id-ul, poate ca problema e de la php.
Trebuie sa...
-
Ordine de executie cu jQuery-AJAX
JavaScript - jQuery - Ajax
Primul mesaj
Am acest cod (ajax este asincron):
function echoHello(){
return $.ajax({
//this will return hello ;
});
}
function echoWorld(){
return world...
Ultimul mesaj
Ajax face un apel către serverul web și este asincron. Nu știi cât va dura pana la raspuns. Este la fel ca:
setTimeout(_ => {...
-
Ajax fade mesaj si redirect dupa un timp
JavaScript - jQuery - Ajax
Primul mesaj
Am codul asta si vreau in loc de input type=button sa fie submit, dar sa imi dea fade la fel in 5 secunde de cand apare eroarea.
Daca schimb cu...
Ultimul mesaj
Am rezolvat,multumesc frumos de ajutor