安全 php API 与 API-Key 设置为会话变量?
Secure php API with API-Key set as session variable?
假设我有 index.php 和 login.php,其中 login.php 仅作为 API,通过位于登录表单上的 AJAX 调用index.php
正如我通过 AJAX 所做的那样,我不能只允许本地主机。我现在所做的是在 index.php 中设置一个 API-Key Session 变量并在 login.php.
中检查它
index.php:
session.start()
$_SESSION['MYKEY'] = 'ABCDEFG'
login.php:
session_start();
if (!isset($_SESSION['MYKEY']) || $_SESSION['MYKEY'] !== 'ABCDEFG') {
http_response_code(401); // UNAUTHORIZED
echo "UNAUTHORIZED!";
die();
}
// more code for actual login logic
这是一个很好的安全措施还是完全没有意义?
如果不是,我 could/should 会做些什么,但要通过 AJAX 保持“动态”?
保护 PHP 站点免受 CSRF 攻击的最广泛使用的方法之一
for more details CSRF token https://www.getastra.com/blog/php-security/php-csrf-protection/
将此代码用于您的 index.php
<?php
session_start();
function genrateString($len = 15) {
$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$stringLength = strlen($string);
$key = '';
for ($i = 0; $i < $len; $i++) {
$key .= $string[rand(0, $stringLength - 1)];
}
return $key;
}
$_SESSION['token'] = genrateString(15);
?>
HTML代码
<input type="hidden" name="token" id="token" value="<?php echo $_SESSION['token'];?>">
<!-- use jquery or javascript to get value for token & send to the backend through ajax -->
并为您的 login.php 页面添加此代码以验证令牌
$token = $_POST['token'];
$ses_token = $_SESSION['token'];
if($ses_token == $token){ //this is only true for a valid token
$return = ['message' => 'valid token', 'status' => true];
} else {
$return = ['message' => 'invalid token', 'status' => false];
}
假设我有 index.php 和 login.php,其中 login.php 仅作为 API,通过位于登录表单上的 AJAX 调用index.php
正如我通过 AJAX 所做的那样,我不能只允许本地主机。我现在所做的是在 index.php 中设置一个 API-Key Session 变量并在 login.php.
中检查它index.php:
session.start()
$_SESSION['MYKEY'] = 'ABCDEFG'
login.php:
session_start();
if (!isset($_SESSION['MYKEY']) || $_SESSION['MYKEY'] !== 'ABCDEFG') {
http_response_code(401); // UNAUTHORIZED
echo "UNAUTHORIZED!";
die();
}
// more code for actual login logic
这是一个很好的安全措施还是完全没有意义?
如果不是,我 could/should 会做些什么,但要通过 AJAX 保持“动态”?
保护 PHP 站点免受 CSRF 攻击的最广泛使用的方法之一
for more details CSRF token https://www.getastra.com/blog/php-security/php-csrf-protection/
将此代码用于您的 index.php
<?php
session_start();
function genrateString($len = 15) {
$string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$stringLength = strlen($string);
$key = '';
for ($i = 0; $i < $len; $i++) {
$key .= $string[rand(0, $stringLength - 1)];
}
return $key;
}
$_SESSION['token'] = genrateString(15);
?>
HTML代码
<input type="hidden" name="token" id="token" value="<?php echo $_SESSION['token'];?>">
<!-- use jquery or javascript to get value for token & send to the backend through ajax -->
并为您的 login.php 页面添加此代码以验证令牌
$token = $_POST['token'];
$ses_token = $_SESSION['token'];
if($ses_token == $token){ //this is only true for a valid token
$return = ['message' => 'valid token', 'status' => true];
} else {
$return = ['message' => 'invalid token', 'status' => false];
}