对于内部使用的PHP站点(没有框架),PDO+;htaccess是否足以防止大多数攻击?

对于内部使用的PHP站点(没有框架),PDO+;htaccess是否足以防止大多数攻击?,php,.htaccess,security,pdo,frameworks,Php,.htaccess,Security,Pdo,Frameworks,我希望这个问题不要太愚蠢。我是PHP新手,对设计一个供内部员工使用的系统感兴趣。(因此所有用户都是可信的——他们的任何输入都将通过PDO) 不过,该系统将托管在互联网上 简单地使用PDO、.htaccess(限制目录访问)和在登录失败时重定向用户(这样没有帐户的用户就无法访问登录页面以外的任何页面,从而限制攻击者基于输入的SQL注入。)是否足以使站点在线托管 没有考虑使用一个框架,但我想知道,对于一个不允许公众看到除了登录页面以外的网站,它究竟能起到什么作用?(至少我是这么想的?) 对于.hta

我希望这个问题不要太愚蠢。我是PHP新手,对设计一个供内部员工使用的系统感兴趣。(因此所有用户都是可信的——他们的任何输入都将通过PDO)

不过,该系统将托管在互联网上

简单地使用PDO、.htaccess(限制目录访问)和在登录失败时重定向用户(这样没有帐户的用户就无法访问登录页面以外的任何页面,从而限制攻击者基于输入的SQL注入。)是否足以使站点在线托管

没有考虑使用一个框架,但我想知道,对于一个不允许公众看到除了登录页面以外的网站,它究竟能起到什么作用?(至少我是这么想的?)

对于.htaccess

deny from all
使用

对于my index.php,它创建了一个新的模板控制器类

$template = new TemplateController();
$template->template_controller();
TemplateController类如下所示:

<?php

class TemplateController
{

    public function template_controller()
    {

        include "views/template.php";

    }

}
处理未登录用户的重定向。仅当用户具有有效会话时,才包括模块

因此,在这种结构下,如果我使用虚拟专用服务器计划在域上托管,网站将如何受到攻击?我只是想知道一个框架和我的框架有什么不同

提前谢谢你

编辑:我忽略了提到如何保护登录页面

我正在使用preg_match来做到这一点

if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['inUsername']) && 
preg_match('/^[0-9A-Za-z!@#$%^&*(),.<>?\/\-_=+ ]+$/', $_POST['inPassword']))
if(preg_match('/^[a-zA-Z0-9]+$/',$POST['inUsername'))和
预匹配('/^[0-9A-Za-z!@$%^&*(),.?\/\-\+]+$/',$POST['inPassword']))

谁会对你进行内部攻击。就解雇他们吧

确保转义、清理或验证需要保存在数据库中的每个使用输入

另外,确保不要将数据库中的内容直接打印到网页上。您不能信任直接来自DB的任何内容。在渲染它们之前,必须先逃离它们


并尽可能使用事先准备好的语句。例如,在数据库中插入某些内容时,甚至在为查询的
WHERE
子句传递参数时,它会处理许多与安全相关的转义。

谁会对您进行内部攻击。就解雇他们吧

确保转义、清理或验证需要保存在数据库中的每个使用输入

另外,确保不要将数据库中的内容直接打印到网页上。您不能信任直接来自DB的任何内容。在渲染它们之前,必须先逃离它们


并尽可能使用事先准备好的语句。例如,在数据库中插入内容时,甚至在为查询的
WHERE
子句传递参数时,它会处理许多与安全相关的转义。

感谢您的回复!我不太担心内部攻击,但公众是否能够攻击一个他们只能看到登录页面的网站?(因此只能使用用户名/密码输入字段),因为该网站将托管在公共域上。另外,请注意您的建议!我会记得从数据库中转义所有内容,并清理输入字段。准备好的语句在所有时间都通过PDO被100%使用:)“谁会在内部攻击你?”--一个访问你的网络的攻击者?甚至开发人员自己也可能在不知不觉中攻击自己的代码。如果代码有漏洞,有时可能会被意外滥用。基本上,漏洞通常是一个软件错误。感谢您的回复!我不太担心内部攻击,但公众是否能够攻击一个他们只能看到登录页面的网站?(因此只能使用用户名/密码输入字段),因为该网站将托管在公共域上。另外,请注意您的建议!我会记得从数据库中转义所有内容,并清理输入字段。准备好的语句在所有时间都通过PDO被100%使用:)“谁会在内部攻击你?”--一个访问你的网络的攻击者?甚至开发人员自己也可能在不知不觉中攻击自己的代码。如果代码有漏洞,有时可能会被意外滥用。基本上,该漏洞通常是一个软件错误。您不应该以任何方式[限制密码]()输入。如果用户希望使用他们自己的骨髓进行身份验证-让他们来吧!限制输入通常不是一个好的安全措施。你到底想保护什么?其他人使用你的软件?不要以这种不透明的方式处理安全问题。如果你知道你的某个地方存在安全漏洞,那么你应该尽快修复它。如果你想让用户决定让他们执行什么PHP代码,你应该使用白名单来明确列出你允许用户执行的所有可能的命令/路径。执行
包括“模块/”$_获取[“路线”]。“.php”。对于我试图保护的内容:XSS、CSRF以及我一直在阅读的有关网站的所有安全问题。如果攻击者只能看到登录页面,则不确定是否可以进行这些攻击?不幸的是,我没有足够的经验来了解这一点,并且在寻找与GET命令相关的特定问题时遇到了一些挑战,这是因为GET查询是以字符串形式发送的,这会使我面临攻击吗?即使攻击者没有访问权限或是您认识的人,也可以这样做。这些攻击中的每一种都有已知的方法可以防止。您不应该以任何方式[限制密码]()输入。如果用户希望使用他们自己的骨髓进行身份验证-让他们来吧!限制输入通常不是一个好的安全措施。什么
if (preg_match('/^[a-zA-Z0-9]+$/', $_POST['inUsername']) && 
preg_match('/^[0-9A-Za-z!@#$%^&*(),.<>?\/\-_=+ ]+$/', $_POST['inPassword']))