首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP初学者安全恐惧

问PHP初学者安全恐惧
EN

Stack Overflow用户
提问于 2012-09-11 22:13:16
回答 3查看 185关注 0票数 3

我是一位科技作家,他做了很多HTML/CSS,但被扔进了一个高压锅里,用PHP重写了一个web应用程序,并且做得相当好,但我有点担心安全性。

具体来说,主页是INDEX.PHP,用户在其中登录。一旦登录,页面就会重写部分内容,并显示未登录的用户无法使用的菜单选项。大约50%的用户永远不需要登录,因为他们将查看不需要安全性的公共文档。其他50%的用户将限制查看某些文档/页面的权限,并能够写入数据库。

这一切我都做得很好,但我关心的是我正在做的两件事,以及它们是否合适:

  1. 登录用户可能会被重定向到另一个页面,比如PAGE1.PHP。我不希望他们能够保存PAGE1.PHP的URL,直接访问那里,绕过安全性,所以在PAGE1.PHP上,我可以检查我在INDEX.PHP上创建的登录cookie。如果存在cookie,他们可以转到页面,如果不能。这是做这种事情的正确方法吗?
  2. 如何阻止恶意用户将重定向插入到各种窗体上的许多文本框之一?我需要允许HTML,如强、字体、背景等。我一直在通过一个函数运行所有文本框值,该函数每次检查一个可能的恶意事件,例如"meta“或”锚“或"java脚本”,但我不确定这是最好的解决方案。

谢谢你的帮忙!

EN

回答 3

Stack Overflow用户

发布于 2012-09-11 22:18:13

$_SESSION会是你的朋友。在正常的共享托管环境中,$_SESSION可能不会比,呃,当前会话的持续时间更长,所以相应地进行计划。(除登录外,别再依赖它了。)

你需要阅读session_start和朋友的信息。

此外,请查看下面的讨论:PHP HTML sanitizer用于清理HTML。(就像FYI一样,bbcode和markdown之所以如此受欢迎也是有原因的。)

票数 4
EN

Stack Overflow用户

发布于 2012-09-11 22:19:45

  1. 不-每个客户都可以操纵他的饼干,发送他们想要的任何东西-甚至一个无效的“登录”Cookie。您必须将这些信息服务器端存储在会话中
  2. 您可以使用strip_tags只允许某些特殊标记或使用html消毒液
票数 0
EN

Stack Overflow用户

发布于 2012-09-11 22:25:34

1.成功登录后,存储一个新的$_SESSION变量,比如用户ID (因为这似乎是经常需要的)

示例:

代码语言:javascript
复制
    if(login is successful)
    { 
       $_SESSION['userId'] = $userId;
    }

创建一个php auth页面,检查是否填充了会话var。如果没有,请重定向到拒绝访问或登录页面。

示例:

代码语言:javascript
复制
if(! isset($_SESSION['userId']) || $_SESSION['userId'] == '')
{
    header("Location: accessDenied.php?msg=Not logged in");
}

在每个安全页上,require('auth.php');

2.您可以在textbox上使用strip_tags,对最终进入数据库的用户输入使用mysqli_real_escape_string。(或使用准备好的语句,请参见Best way to prevent SQL Injection in PHP)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12378706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档