Как защитить мои вызовы jQuery AJAX в PHP и Javascript?

У меня есть фрагмент кода PHP и Javascript, в котором я делаю вызов JQuery AJAX для получения данных с PHP и отображения его в HTML.

PHP code <?php myfunction(); function myfunction() { $myvar = $_POST['q']." how are you?"; $myvar2 = $_POST['z']; echo $myvar."\n".$myvar2; } ?> HTML code <div id="mydiv"></div> Javascript code var data =" hello world"; var data2=" hello all"; function run() { $.ajax( { url: 'myscript.php', data: {'q': data,'z':data2}, type: 'post', success: function(output) { //alert(output); document.getElementById("mydiv").innerHTML += output; //add output to div } } ); } 

Над кодом работает нормально.

Я хочу защитить этот вызов AJAX, чтобы предотвратить его от хакеров, потому что я делаю вызов AJAX, который видим для всех. Этот код уязвим для атаки хакеров. Мой вопрос в том, что и где я должен наложить дополнительные проверки, чтобы сделать мой AJAX-вызов безопасным?

Одна вещь, которую я знаю, что я должен использовать следующий фрагмент кода в своем PHP-файле

 if (!$_POST['q'] && !$_POST['z']) { exit; }| else { myfunction(); //call myfunction only if page is posted } 

Какие дополнительные проверки следует использовать в файлах PHP и Javascript?

есть много трюков, которые используют хакеры, поэтому вам просто нужно сделать это сложным / трудоемким, чтобы вознаграждение не стоило инвестиций.

Сначала вы никогда не должны повторять то, что попало в сообщение. Известно, что хакеры выполняют всевозможные инъекции с таким отверстием.

Чтобы избежать этого, просто сначала снимите значение.

Для MySQL используйте: mysqli_real_escape_string .

При повторном обратном HTML ( echo или print ) используйте: htmlspecialchars .

Для выполнения кода с использованием exec используйте escapeshellcmd и escapeshellarg .

Пример:

 <?php define('CHARSET', 'ISO-8859-1'); define('REPLACE_FLAGS', ENT_COMPAT | ENT_XHTML); function html($string) { return htmlspecialchars($string, REPLACE_FLAGS, CHARSET); } $myvar = $_POST['q']." how are you?"; $myvar2 = $_POST['z']; echo html($myvar."\n".$myvar2); ?> 

Вы используете POST, что хорошо.

  1. Вы можете использовать «Сессию» для обеспечения безопасности.
  2. Для обеспечения безопасности кода вы можете поместить свои функции и другой важный код в несколько разных php-файлов и включить их в основной файл. Чтобы ваш код был видимым напрямую.