Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        3年前关闭。
                                                                                            
                
        
我有一个网站,当访客登陆多个登陆页面(不同语言)中的任何一个页面时,他们都有机会在表格中输入许多促销代码。如果他们输入了正确的代码之一(存储在SQL表中),则他们将转到带有格式的另一页,在其中可以提供其邮件信息以接收免费产品。如果他们输入的代码不在桌子上,他们会收到一条消息,指出他们输入的代码无效并被阻止。

这通过php起作用。输入并提交登录页面表单后,将生成如下网址:website.com/formentry.php?promo=code,其中“ code”与用户输入表单的内容相匹配。如果“代码”与数据库表中代码列中的字符串匹配,则将它们发送到输入表单;如果不匹配,则它们将被阻止。至此,一切正常,并且顺利运行了几个月。

但是,最近发现了一个问题:可以通过直接在浏览器的URL字段中输入website.com/formentry.php?code=code来规避登录页面。由于几个原因,这是一个问题,我需要防止它成为可能。

是否有人对解决方案有任何想法?也许使用.htaccess文件将这些URL请求发送回登录页面?

最佳答案

使用会话,您可以在用户在登录页面上输入正确的代码时设置用户的会话:

session_start();
$_SESSION[valid_user] = true;


然后,在其他所有页面(非登陆页面)上,放置一个验证器,如下所示:

if (!$_SESSION[valid_user])
{
  echo "You do not have permission to view this page";
}


或者,您可以将用户重定向到另一个页面,而不是显示错误消息:

if (!$_SESSION[valid_user])
{
  $url = "http://example.com";
  header("Location: $url");
  exit();
}


如果您想更进一步,请说认证。代码是420。您可以设置目标网页以采用提交的代码并进行设置

$_SESSION[420] = true;

并在产品#420的页面上(或类似内容)如上所述验证用户的会话中是否包含420 == true。这样,如果他们使用优惠券代码420,则仅有权查看产品#420的页面,而不能查看所有产品页面。

关于php - 防止流量绕过目标网页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40644164/

10-09 08:41