У меня есть фрагмент кода 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, что хорошо.