加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何为检查请求源提供更多安全性

发布时间:2020-12-13 13:31:55 所属栏目:PHP教程 来源:网络整理
导读:我正在开发一个 PHP Web应用程序,我想为应用程序提供更多安全性,以便没有人可以轻易地破坏功能. 关于我的问题的简要说明: 在一个模块中有一个阶段,我正在检查请求的来源(来自此请求的来源) 目前,我正在使用HTTP_REFERRER变量(在php中可用).我正在使用一个特
我正在开发一个 PHP Web应用程序,我想为应用程序提供更多安全性,以便没有人可以轻易地破坏功能.

关于我的问题的简要说明:
在一个模块中有一个阶段,我正在检查请求的来源(来自此请求的来源)

目前,我正在使用HTTP_REFERRER变量(在php中可用).我正在使用一个特定的URL(例如http://www.example.com/test.php)检查此变量值.如果存在完全匹配,则只有我调用进一步的操作.

我对上面的方法感到有点困惑,我是否应该使用HTTP_REFERRER或检查IP地址(有效请求是否来自任何特定的IP地址)?

我还想知道提供安全性的更好方法.

有人有想法然后请分享?

提前致谢

网络安全中的第1课:
永远不要相信用户输入.当我说永远不会,我的意思是永远不会. ;)包含PHP中的HTTP_REFER var,它很容易受到http标头的攻击(来源: http://www.mustap.com/phpzone_post_62_how-to-bypass-the-referer-se)

检查源的一个可能的解决方案是使用表单令牌(csrf保护):http://www.thespanner.co.uk/2007/04/12/one-time-form-tokens/但也不安全,并且只能使用您自己的源.

一个简单的CSRF(跨站点请求伪造)保护示例:(因此很简单.对于更安全/更健壮的解决方案,请参阅The Rook的答案)

1)在您的表单页面中,创建某种令牌并将其放入您的会话和隐藏表单字段中:

<?php
    session_start();
    $csrfToken = md5(uniqid(mt_rand(),true)); // Token generation updated,as suggested by The Rook. Thanks!

    $_SESSION['csrfToken'] = $token;
?>
<form action="formHandler.php">
   <input type="hidden" name="csrfKey" value="<?php echo $csrfToken ?>" />
</form>

2)在表单处理程序中检查令牌是否有效.

<?php
   session_start();
   if($_POST['csrfKey'] != $_SESSION['csrfKey']) {
      die("Unauthorized source!");
   }
?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读