我有一个生产公共电子商务网站,正在处理真实货币。我只想登录用户(授权)查看和使用该功能。
是否有任何潜在的漏洞,任何人直接调用 www.mywebsite.com/get_content.php?abc 从而调用该函数?
另外,我目前的编码方法是否足够?请提供生产电子商务网站的最佳指南。
我对PHP很陌生,并希望在其中实现安全性。
Product.php < -accessible through navbar
<?php
include 'start_session.php';
?>
<html>
<head>
</head>
<body>
<div class="container">
<?php
include 'get_content.php';
?>
</div>
</body>
</html>
start_session.php &lt;-strong
<?php
session_start();
?>
get_content.php &lt; -A仅针对 Product.php 的PHP页面,以便于阅读和维护
<?php
function abc(){
//do something
}
if((isset($_SESSION['user_id']))){
//connect db and get content
}
?>
答案 0 :(得分:1)
要获得最佳实践,请尝试使用Laravel或Yii2等框架。然后根据需要实施身份验证系统。
要创建自己的身份验证系统,您需要为登录用户建立一个user_id会话,然后在每个登录用户页面顶部创建一个检查会话用户ID的检查,如果没有设置将重定向到登录页面。
如果用户未登录,更简洁的方法是在顶部进行一次简单的检查。
if(!isset($_SESSION['users_id'])){
//redirect to login page and exit script
header('Location: /login.php');
exit;
}
答案 1 :(得分:1)
首先,您要在get_content.php文件中调用start_session();
<?php
start_session();
function abc(){
//do something
}
if((isset($_SESSION['user_id']))){
//connect db and get content
}
?>
然后在您的登录脚本中,当用户登录时,向会话中添加一些变量,告诉您的脚本用户已登录该站点。这是一个基本的无安全方法,但为您提供了想法
$_SESSION['user_logged_in'] = true;
然后将您的get_content.php
文件更改为此类
<?php
start_session();
if ($_SESSION['user_logged_in'] == true) {
function abc(){
//do something
}
if((isset($_SESSION['user_id']))){
//connect db and get content
}
} else {
//redirect user to the login screen
}
?>
如果用户未登录,则无法访问脚本