我希望这个问题在一个问题中不会太愚蠢。我是PHP的新手,并且有兴趣为内部人员使用设计系统。(因此所有用户都受到信任 - 他们的任何输入都将通过PDO(
该系统将托管在互联网上。
只需使用PDO,.HTACCESS(限制目录访问(,并在登录失败后重定向用户(因此,没有帐户的用户无法到达登录页面以外的任何页面 - 因此,限制了攻击者的基于输入的SQL注入。?(足以让网站在线托管?
没有考虑使用框架,而是想知道它对不允许公众看到登录页面以外的任何其他内容的网站确切起作用?(至少那是我的想法吗?(
for .htaccess,
deny from all
被使用。
对于我的index.php,它创建了一个新的模板控制器类
$template = new TemplateController();
$template->template_controller();
TemplateController类以下内容:
<?php
class TemplateController
{
public function template_controller()
{
include "views/template.php";
}
}
最后the template.php具有
if (isset($_SESSION["loggedIn"]) && $_SESSION["loggedIn"]) {
if (isset($_GET["route"])) {
if ($_GET["route"] == "home" {
include "modules/" . $_GET["route"] . ".php";
}
} else {
include "modules/404.php";
}
} else {
include "modules/login.php";
}
处理未登录的用户的重定向。仅当用户具有有效的会话时包括模块。
因此,对于这种结构,如果我使用虚拟专用服务器计划将其托管在一个域上,网站将如何受到攻击?只是想知道一个框架将与像我这样的设置有何不同。
预先感谢您!
编辑:我已经忽略了如何确定登录页面。
我正在使用preg_match做。
if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['inUsername']) &&
preg_match('/^[0-9A-Za-z!@#$%^&*(),.<>?/-_=+ ]+$/', $_POST['inPassword']))
谁会在内部攻击您。只是解雇它们。
确保您逃脱并消毒或验证需要保存在DB中的所有使用输入。
另外,请确保您不会直接在网页上打印出从数据库中出现的东西。您不能直接相信来自DB的任何东西。
,您必须逃脱它们。并尽可能使用准备好的语句。例如,在数据库中插入某些内容时,或者甚至传递查询的WHERE
子句的参数时。