![如何让我的所有网站只能通过浏览器访问,而不能通过自动脚本访问](https://linux22.com/image/617430/%E5%A6%82%E4%BD%95%E8%AE%A9%E6%88%91%E7%9A%84%E6%89%80%E6%9C%89%E7%BD%91%E7%AB%99%E5%8F%AA%E8%83%BD%E9%80%9A%E8%BF%87%E6%B5%8F%E8%A7%88%E5%99%A8%E8%AE%BF%E9%97%AE%EF%BC%8C%E8%80%8C%E4%B8%8D%E8%83%BD%E9%80%9A%E8%BF%87%E8%87%AA%E5%8A%A8%E8%84%9A%E6%9C%AC%E8%AE%BF%E9%97%AE.png)
我的网站被一些自动运行libwww-perl
BOT/0.1 (BOT for JCE)
的Gecko/20100101
有没有什么办法可以让我的所有网站只对正版浏览器可用,而对这些自动脚本不可用。
答案1
不,您无法确保您的网站仅对正版浏览器可用。这是因为您确定客户端平台和 Web 浏览器的唯一数据来源是请求标头,而这些标头完全可以被黑客伪造。
例如,黑客可以使用 Fiddler 之类的工具向您的网站发送自定义 HTTP 请求,其中包含伪造的User-Agent
请求标头,这些请求标头看起来就像 Internet Explorer、Chrome、Firefox、Googlebot 或其他 HTTP 客户端。因此,根据 HTTP 请求数据辨别黑客和合法用户非常困难,甚至不可能。
答案2
我可以给你列出无数你可以采取的防御措施(限制用户代理、使用 XML 文件中的 JavaScript 使你的内容显示、验证码 - 这真是激怒观众的好方法!),但他们只能在研究如何绕过它们的同时避免不可避免的事情发生。
最好的办法是,直接戳穿问题的核心,而不是一味地设置防御。如果可以,查看应用程序,尝试找出他们是如何进入的,然后尝试修补漏洞。最明显的地方是查看表单输入 - 这些输入是否未经解析就传递给 SQL 字符串?它们是否生成 SQL 字符串而不是使用准备好的语句(从一开始就消除 SQL 注入尝试)?如果这是您可以修复的问题,那就去做吧。如果这是其他人的产品,请创建一个补丁并将其发送给他们。
在安全方面,最糟糕的做法就是假设它不会发生在你身上。蠕虫、病毒和自动机器人通常不够聪明,无法意识到你的小网站不构成威胁。
要聪明、要安全、要警惕。