php怎么区分是不是正常请求

不及物动词 其他 133

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要区分是否为正常请求,可以考虑以下几个方面:

    1. 检查请求方法:正常的请求通常会使用GET或POST方法,而非正常请求可能会使用其他方法如PUT、DELETE等。可以通过检查$_SERVER[‘REQUEST_METHOD’]变量来获取当前请求的方法,比对该值即可判断请求是否为正常请求。

    2. 检查请求来源:正常的请求通常是通过浏览器发起的,而非正常请求可能是通过脚本、HTTP工具、爬虫等发起的。可以通过检查$_SERVER[‘HTTP_USER_AGENT’]变量来获取当前请求的用户代理信息,判断是否来自常见的浏览器,若不是则可能为非正常请求。

    3. 检查请求参数:正常的请求通常会携带一些必要的参数,而非正常请求可能会携带异常的参数或者不携带参数。可以通过检查$_GET、$_POST等超全局变量来获取请求携带的参数,根据业务需求判断参数的合法性,若参数异常则可能为非正常请求。

    4. 验证请求合法性:正常的请求通常会通过一些验证措施,如身份验证、验证码验证等。可以根据具体业务需求,在接口或页面访问前对请求进行合法性验证,判断是否满足合法访问条件,若不满足则判定为非正常请求。

    综上所述,想要区分正常请求和非正常请求,可以综合考虑请求方法、请求来源、请求参数和请求合法性等因素进行判断,根据具体业务需求来实现相应的判断逻辑。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    在PHP中,可以通过以下方法来区分正常请求:

    1. 判断请求方式:使用$_SERVER[‘REQUEST_METHOD’]可以获取到当前请求的方式(GET、POST、PUT等)。正常的请求一般是通过GET或POST方式发送的,可以通过判断请求方式来区分。

    “`php
    if ($_SERVER[‘REQUEST_METHOD’] == ‘GET’) {
    // 处理GET请求
    } elseif ($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {
    // 处理POST请求
    } else {
    // 处理其他请求方式
    }
    “`

    2. 判断请求是否为AJAX请求:通过判断$_SERVER[‘HTTP_X_REQUESTED_WITH’]是否为XMLHttpRequest来判断当前请求是否为AJAX请求。正常的请求一般不是通过AJAX发送的。

    “`php
    if (isset($_SERVER[‘HTTP_X_REQUESTED_WITH’])
    && strtolower($_SERVER[‘HTTP_X_REQUESTED_WITH’]) == ‘xmlhttprequest’) {
    // 处理AJAX请求
    } else {
    // 处理非AJAX请求
    }
    “`

    3. 判断是否有合法的来源页面:通过判断$_SERVER[‘HTTP_REFERER’]来获取当前请求的来源页面。正常的请求一般是从其他页面跳转过来的,可以通过判断来源页面的合法性来区分。

    “`php
    $referer = isset($_SERVER[‘HTTP_REFERER’]) ? $_SERVER[‘HTTP_REFERER’] : ”;

    if (preg_match(‘/example\.com/’, $referer)) {
    // 处理合法的来源页面请求
    } else {
    // 处理非法的来源页面请求
    }
    “`

    4. 使用验证码:在某些情况下,可以通过使用验证码来判断当前请求是否为正常请求。正常的请求一般不会触发验证码验证。

    “`php
    session_start();

    if ($_SERVER[‘REQUEST_METHOD’] == ‘POST’) {
    $code = isset($_POST[‘code’]) ? $_POST[‘code’] : ”;

    if ($code == $_SESSION[‘code’]) {
    // 验证码验证成功,处理正常请求
    } else {
    // 验证码验证失败,处理非正常请求
    }
    }
    “`

    5. 使用HTTP身份验证:通过在服务器端设置HTTP身份验证,只有携带正确的用户名和密码才能访问。通过验证用户名和密码可以区分正常的请求。

    “`php
    $username = ‘admin’;
    $password = ‘password’;

    if (!isset($_SERVER[‘PHP_AUTH_USER’]) || !isset($_SERVER[‘PHP_AUTH_PW’])
    || $_SERVER[‘PHP_AUTH_USER’] != $username || $_SERVER[‘PHP_AUTH_PW’] != $password) {
    header(‘WWW-Authenticate: Basic realm=”Restricted Area”‘);
    header(‘HTTP/1.0 401 Unauthorized’);
    echo ‘Authorization Required.’;
    exit;
    }

    // 处理正常请求
    “`

    以上是几种常见的区分正常请求的方法,可以根据具体的需求选择适合的方式。需要注意的是,这些方法都可以被绕过,因此在处理敏感操作时应当采取更严格的安全措施。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在PHP中,可以使用一些方法和技术来区分正常请求和非正常请求。下面我将为您介绍几种常用的方法。

    1. HTTP请求方法

    HTTP协议规定了几种常见的请求方法,如GET、POST、PUT、DELETE等。正常的请求应该使用合适的HTTP请求方法进行访问。可以通过检查`$_SERVER[‘REQUEST_METHOD’]`变量来获取当前请求所使用的方法。例如:

    “`php
    if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’) {
    // 正常的POST请求
    } else {
    // 非正常请求
    }
    “`

    2. 请求来源IP地址

    可以使用`$_SERVER[‘REMOTE_ADDR’]`变量获取当前请求的来源IP地址。正常的请求应该来自合法的IP地址。可以通过白名单机制来识别合法的IP地址,如果请求的IP地址不在白名单中,则可能是非正常请求。例如:

    “`php
    $whiteList = [‘127.0.0.1’, ‘192.168.0.1’];
    if (in_array($_SERVER[‘REMOTE_ADDR’], $whiteList)) {
    // 正常请求
    } else {
    // 非正常请求
    }
    “`

    3. 请求头信息

    可以通过检查请求头信息来判断请求的合法性。例如,可以通过检查`User-Agent`请求头来判断请求是否来自常见的浏览器。正常请求应该携带合法的User-Agent信息。例如:

    “`php
    if (strpos($_SERVER[‘HTTP_USER_AGENT’], ‘Mozilla’) !== false) {
    // 正常请求
    } else {
    // 非正常请求
    }
    “`

    4. CSRF token验证

    CSRF(Cross-Site Request Forgery)跨站请求伪造是一种常见的网络攻击。为了防止CSRF攻击,可以在表单中添加一个CSRF token,并在后台验证该token的合法性。如果请求不携带合法的token,可以认为是非正常请求。例如:

    “`php
    session_start();
    if (isset($_POST[‘csrf_token’]) && $_POST[‘csrf_token’] == $_SESSION[‘csrf_token’]) {
    // 正常请求
    } else {
    // 非正常请求
    }
    “`

    需要注意的是,以上方法只是一些基本的判断方式,可以根据实际需求进行扩展和改进。综合使用这些方法可以有效地区分正常和非正常请求,提高应用的安全性。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部