站点日志和PHP保护

站点日志和PHP保护,php,.htaccess,logging,Php,.htaccess,Logging,我在查看日志时注意到以下几点 [Tue Apr 02 16:12:02 2013] [error] [client 31.181.33.208] File does not exist:/xxx/join.php+++++++++++++++++++++++++++++++++++++++++++++++++++Result:+\xed\xe5+\xed\xe0\xf8\xeb\xee\xf1\xfc+\xf4\xee\xf0\xec\xfb+\xe4\xeb\xff+\xee\xf2\xef\

我在查看日志时注意到以下几点

[Tue Apr 02 16:12:02 2013] [error] [client 31.181.33.208] File does not exist:/xxx/join.php+++++++++++++++++++++++++++++++++++++++++++++++++++Result:+\xed\xe5+\xed\xe0\xf8\xeb\xee\xf1\xfc+\xf4\xee\xf0\xec\xfb+\xe4\xeb\xff+\xee\xf2\xef\xf0\xe0\xe2\xea\xe8;, referer: http://www.edrobe.com/join.php+++++++++++++++++++++++++++++++++++++++++++++++++++Result:+%ed%e5+%ed%e0%f8%eb%ee%f1%fc+%f4%ee%f0%ec%fb+%e4%eb%ff+%ee%f2%ef%f0%e0%e2%ea%e8%3b
我从未见过这样的事。我应该担心吗?我能做些什么来阻止这些代码在我的网站上运行


谢谢

该错误表示有人试图点击/xxx/join.php并向其传递一些异常数据

好消息是: 该文件不存在,因此此操作并没有为他们带来任何有用的结果

坏消息是: 他们可能会尝试其他事情(其他人也一样)

需要考虑的事情
  • 清理用户输入是个好主意
  • 保护允许上载的文件夹是一个好主意(包括使用权限和通过web服务器配置)
  • 您还可以使用防火墙阻止来自此IP和/或一系列IP的流量
    • 污垢的评论是非常糟糕的建议

      在输入进入应用程序逻辑之前,很难验证输入,到那时,您的示例所针对的漏洞已经被利用。您永远不应该清理输入(出于多种原因)-接受或拒绝它-但您必须始终清理输出

      您在日志中看到的大部分内容都是破坏系统的失败尝试(成功的攻击不会留下证据)。但是检测失败的攻击是防止成功攻击的一种非常有用的方法——如果您在Unix/Linux上运行,可以监视日志中的异常情况,并注入防火墙规则来阻止该客户端

      不要把时间浪费在对单一事件的下意识反应上。如果你对你的网站的安全性很认真,那么最好的建议就是计划如何保护你的网站,计划你将如何检测你是否被入侵,以及计划你如何在服务被入侵后重新上线

      在和上设置安全服务器有很多有用的东西。对于任何将服务器接入互联网的人来说,这应该是必要的阅读资料。特别是对于PHP,请在


      如果您在共享主机上,并且只能访问.htaccess,那么您就没有安全性-您所能做的就是督促您的服务提供商实施适当的安全措施,并在网站被破坏时重新上载网站。

      您所能做的就是尽可能保护您的网站。除非您是特定的目标,否则攻击者只会移动到保护较少的站点

      一些建议:

      使用正则表达式。这限制了用户可以提交的可能输入。在新的HTML5中,您可以向输入标记添加模式参数。例如:

      <input type="tel" name="phone" max="20" pattern="\d{3}[\-]\d{3}[\-]\d{4}">
      
      
      
      HTML5也有新的输入类型,但并非所有浏览器都支持这些类型,因此最好包含模式。具有各种输入类型的通用模式。正如您可能已经注意到的,您还可以限制输入的长度。如果您知道输入长度不能超过X个字符,则不允许用户输入超过X个字符

      如果用户输入存储在数据库中,PHP数据库扩展具有转义字符串的函数。因此,任何特殊的alt代码字符或函数都不会执行,而是作为文本字符串输入

      对于PostgreSQL:
      pg\u escape\u string()

      对于MySQL:
      MySQL\u real\u escape\u string()

      还有一些函数,如
      stripslashes()
      ,可以从输入中删除斜杠,从而禁用特殊字符

      遵循上述步骤,您可以防止:
      -提交的输入错误
      -提交的错误输入无效
      -保护数据库不受SQL注入的影响


      您还可以将服务器配置为阻止发起攻击的IP地址。如果您的服务器在Linux上,那么这将提供非常有用的信息。

      对此没有一个简单的答案。最佳做法是清理/验证网站上的任何用户输入或帖子值,因为这是大多数攻击的起点。最后三篇帖子非常有用。我选择这个是因为它在我需要做的事情上显示了更多的方向。谢谢