как добраться, ДОБИРАЮТСЯ и переменные POST с JQuery?

Я использую три разных способа предотвращения уязвимости моего веб-приложения для SQL-инъекции.

  1. Использование mysql_real_escape_string(), которое является предопределенной функцией в PHP , и этот код добавляет обратную косую черту к следующим символам: \x00, \n, \r, \, ', " и \x1a. Передайте входные значения в качестве параметров, чтобы свести к минимуму вероятность внедрения SQL.
  2. Самый продвинутый способ - использовать PDO.

Надеюсь, это поможет вам.

Рассмотрим следующий запрос:

$iId = mysql_real_escape_string("1 OR 1=1"); $sSql = "SELECT * FROM table WHERE id = $iId";

mysql_real_escape_string () здесь не защитит. Если вы используете одиночные кавычки ('') вокруг ваших переменных внутри вашего запроса, это то, что защищает вас от этого. Ниже приведено ниже решение:

$iId = (int) mysql_real_escape_string("1 OR 1=1"); $sSql = "SELECT * FROM table WHERE id = $iId";

В этом вопросе есть хорошие ответы.

Я предлагаю , наилучшим вариантом является использование PDO.

Изменить:

mysql_real_escape_string() устарел с PHP 5.5.0. Используйте либо mysqli, либо PDO.

Альтернативой mysql_real_escape_string () является

string mysqli_real_escape_string ( mysqli $link , string $escapestr )

Пример:

$iId = $mysqli->real_escape_string("1 OR 1=1");
$mysqli->query("SELECT * FROM table WHERE id = $iId");

94
задан A.L 13 January 2015 в 16:25
поделиться

7 ответов

Для ПОЛУЧАЮТ параметры, можно захватить их от document.location.search:

var $_GET = {};

document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
    function decode(s) {
        return decodeURIComponent(s.split("+").join(" "));
    }

    $_GET[decode(arguments[1])] = decode(arguments[2]);
});

document.write($_GET["test"]);

Для параметров POST можно сериализировать $_POST объект в формате JSON в a <script> тег:

<script type="text/javascript">
var $_POST = <?php echo json_encode($_POST); ?>;

document.write($_POST["test"]);
</script>

В то время как Вы в нем (выполнение вещей на стороне сервера), Вы могли бы собрать ПОЛУЧИТЬ параметры на PHP также:

var $_GET = <?php echo json_encode($_GET); ?>;

Примечание: Вам будет нужна версия 5 PHP или выше использовать встроенное json_encode функция.


Обновление: вот более универсальная реализация:

function getQueryParams(qs) {
    qs = qs.split("+").join(" ");
    var params = {},
        tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])]
            = decodeURIComponent(tokens[2]);
    }

    return params;
}

var $_GET = getQueryParams(document.location.search);
167
ответ дан Ates Goral 24 November 2019 в 06:03
поделиться

Существует плагин для jQuery для получения, ПОЛУЧАЮТ параметрические усилители, названные .getUrlParams

Для POST, единственное решение повторяет POST в переменную JavaScript, использующую PHP, как предложенный Moran.

16
ответ дан Leandro Ardissone 24 November 2019 в 06:03
поделиться

Или можно использовать этот http://plugins.jquery.com/project/parseQuery , это меньше, чем большинство (уменьшил 449 байтов), возвращает объект, представляющий пары "имя-значение".

5
ответ дан 24 November 2019 в 06:03
поделиться

С любым языком серверной стороны необходимо будет испустить переменные POST в JavaScript.

.NET

var my_post_variable = '<%= Request("post_variable") %>';

Просто остерегаться пустых значений. Если переменная, которую Вы пытаетесь испустить, будет на самом деле пуста, Вы получите ошибку синтаксиса JavaScript. Если Вы знаете, что это - строка, необходимо обернуть его в кавычки. Если это - целое число, можно хотеть протестировать, чтобы видеть, существует ли это на самом деле прежде, чем записать строку в JavaScript.

3
ответ дан EndangeredMassa 24 November 2019 в 06:03
поделиться

Можно попробовать Объект Строки запроса плагин для jQuery.

2
ответ дан Burak Erdem 24 November 2019 в 06:03
поделиться

Вот что-то для сбора весь эти GET переменные в глобальном объекте, стандартная программа, оптимизированная за несколько лет. Начиная с повышения jQuery теперь кажется уместным сохранить их в самом jQuery, согласовываю с John на потенциальной базовой реализации.

jQuery.extend({
    'Q' : window.location.search.length <= 1 ? {}
        : function(a){
            var i = a.length, 
                r = /%25/g,  // Ensure '%' is properly represented 
                h = {};      // (Safari auto-encodes '%', Firefox 1.5 does not)
            while(i--) {
                var p = a[i].split('=');
                h[ p[0] ] = r.test( p[1] ) ? decodeURIComponent( p[1] ) : p[1];
            }
            return h;
        }(window.location.search.substr(1).split('&'))
});

использование В качестве примера:

switch ($.Q.event) {
    case 'new' :
        // http://www.site.com/?event=new
        $('#NewItemButton').trigger('click');
        break;
    default :
}

Hope это помогает.;)

2
ответ дан Matt Gardner 24 November 2019 в 06:03
поделиться

Плагины jQuery кажутся хорошими, но мне нужна была быстрая js-функция для разбора параметров get. Вот что я нашел.

http://www.bloggingdeveloper.com/post/JavaScript-QueryString-ParseGet-QueryString-with-Client-Side-JavaScript.aspx

1
ответ дан 24 November 2019 в 06:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: