如何在PHP中识别用户?

如何在PHP中识别用户?,php,ip,mac-address,Php,Ip,Mac Address,我有个大问题,我已经考虑了两天了。我写了一个关于捕获未注册(来宾)用户的小班课程,这些用户可以通过URL尝试SQL注入攻击,经过两次实验后,他们的IP在我的数据库中被阻止(因此在数组中我存储了一些标志) 但是: IP不是一个好的解决方案(若服务器在代理下,PHP无法看到LAN IP),即使它可以,我也无法阻止它。我无法阻止192.168.1.10:) 我不需要广域网IP,因为我不能因为一个n00b而阻止一个公司的站点 PHP无法捕获Mac地址(Mac未包含在标头中) 我想阻止也是来宾的用户,所以

我有个大问题,我已经考虑了两天了。我写了一个关于捕获未注册(来宾)用户的小班课程,这些用户可以通过URL尝试SQL注入攻击,经过两次实验后,他们的IP在我的数据库中被阻止(因此在数组中我存储了一些标志)

但是:

  • IP不是一个好的解决方案(若服务器在代理下,PHP无法看到LAN IP),即使它可以,我也无法阻止它。我无法阻止192.168.1.10:)
  • 我不需要广域网IP,因为我不能因为一个n00b而阻止一个公司的站点
  • PHP无法捕获Mac地址(Mac未包含在标头中)
  • 我想阻止也是来宾的用户,所以我不知道他们的用户名或邮件之类的东西
  • 如果(isset($\u会话[“用户”])){ $user=$_会话[“user”];}其他{ $user=“未知”;}

  • 我读到perl有一个叫做NET::MAC的API

  • 我决定通过perl查找用户mac地址,并将其集成到PHP中。可能吗? 如果是,请怎么做?我不明白。 如果没有:

    我怎样才能解决这个问题?如果用户未注册,我如何识别他/她?有机会吗?如果你已经有过这样的问题,请分享你的经验。提前感谢…

    获取用户的MAC地址是不可能的。服务器看到的唯一mac地址是它所连接的路由器的mac地址。如果你阻止了它,你就会阻止所有的流量进入你的服务器

    所以正如@Jon所说,如果你的应用程序是安全的,你就不必关心那些试图注入东西的人

    顺便说一句,您检测SQL注入的方法非常糟糕。尤其是
    ,但其他字符在大多数上下文中都是完全有效的。例如,用户的真实姓名可能包括
    。但是,您根本不需要添加这样的检测代码-如果您正确地避开所有不受信任的输入,或者使用预先准备好的语句进行查询(更好),那么您的应用程序根本不容易受到SQL注入的攻击。

    不可能获取用户的MAC地址。服务器看到的唯一mac地址是它所连接的路由器的mac地址。如果你阻止了它,你就会阻止所有的流量进入你的服务器

    所以正如@Jon所说,如果你的应用程序是安全的,你就不必关心那些试图注入东西的人


    顺便说一句,您检测SQL注入的方法非常糟糕。尤其是
    ,但其他字符在大多数上下文中都是完全有效的。例如,用户的真实姓名可能包括
    。但是,您根本不需要添加这样的检测代码-如果您正确地转义了所有不受信任的输入,或者您为查询使用了准备好的语句(更好),那么您的应用程序根本不容易受到SQL注入的攻击。

    您可以尝试将ip与用户代理字符串以及其他一些信息(如插件)一起使用。但是,如果有人用他的公司浏览器尝试,ip和用户代理应该是相同的

    因此,唯一的解决办法是:


    确保页面安全,这样就不会有SQL注入的机会

    您可以尝试将ip与用户代理字符串和一些其他信息(如插件)一起使用。但是,如果有人用他的公司浏览器尝试,ip和用户代理应该是相同的

    因此,唯一的解决办法是:


    确保页面安全,这样就不会有SQL注入的机会

    可能没有最终的解决方案。如果您知道注册用户的IP,则只能允许他们访问您的页面(.htacces on Apache server)。您还可以尝试在用户注册后设置cookie,然后您将能够检查指定的cookie是否存在(只有当用户在同一台计算机上仅使用一个浏览器时,我才可能使用cookie,因此您还可以在每次登录时设置cookie)。会话总是在用户关闭浏览器时结束。

    可能没有最终解决方案。如果您知道注册用户的IP,则只能允许他们访问您的页面(.htacces on Apache server)。您还可以尝试在用户注册后设置cookie,然后您将能够检查指定的cookie是否存在(只有当用户在同一台计算机上仅使用一个浏览器时,我才可能使用cookie,因此您还可以在每次登录时设置cookie)。会话总是在用户关闭浏览器时结束。

    何必麻烦呢?如果您的代码编写正确,请让他们尝试注入所需的所有内容。您无法读取服务器上的mac地址。它不包含在任何数据包中。(而不是请求页面的用户的mac)如果您能够清楚地识别用户,则会立即被误用。我很高兴这还不可能。何必麻烦呢?如果您的代码编写正确,请让他们尝试注入所需的所有内容。您无法读取服务器上的mac地址。它不包含在任何数据包中。(而不是请求页面的用户的mac)如果您能够清楚地识别用户,则会立即被误用。我很高兴这还不可能。但我通过URL(例如index.php?action=page&p_id='12)将其转换为整数来保护它。但我通过URL(例如index.php?action=page&p_id='12)将其转换为整数来保护它。
    $blockSigns = array ("'", "/", "\", ":", "//", "and so on");