如何防止我们的网站被网络抓取


how to prevent our website from web scraping

昨天我去面试,他们问了我两个我无法回答的问题。有人能给我指一下下面的正确方向吗?

  1. 防止网站抓取网页的方法
  2. 如何防止网站中的SQL注入
  1. 通常通过使用robots.txt文件来避免报废
  2. 他们很可能会询问如何防止SQL注入,而不是添加它。这是通过输入净化来完成的

以下是一些可以防止爬行/刮擦的方法

  1. 您可以进行一些基本的HTTP标头验证
  2. 您可以使用一些第三方工具
  3. 你可以使用JS渲染/动态内容,这会增加一层难度
  4. 你可以使用诸如登录之类的东西,并限制对某些区域的访问
  5. -您可以使用robots.txt文件来控制搜索爬网程序
  6. -您还可以使用rel="_nofllow"属性装饰超链接

用于SQL注入保护

  1. -您可以尝试从您的数据库(n层应用程序)中提取一些级别,其中实际的web应用程序不会直接与数据库交互
  2. 正确消毒、编码和处理所有用户输入
  3. 不要依赖自己的验证和卫生设施,使用由开发团队组成
  4. 在应用程序中使用单元测试,确保应用程序能够处理所有类型的输入,并且故障安全
  5. 确保您没有直接从数据库
  1. 为了防止抓取,最好的方法是让网页在每次加载时都有一些不可预测的不同之处。每个页面使用标签等的唯一标识符
  2. 不要将输入包括在动态SQL中。请改用绑定

您可以使用htaccess文件/代码来阻止坏的bots/scraper并防止SQL注入。

  1. 请参阅此链接:http://www.askapache.com/htaccess/blocking-bad-bots-and-scrapers-with-htaccess.html获取大量的坏机器人/抓取器列表和要使用的htaccess代码

2.

    # SQL Injection Protection: Block common SQL commands used in Query Strings
    RewriteCond %{QUERY_STRING} (;|<|>|'|"|')|%0A|%0D|%22|%27|%3C|%3E|%00).*(/'*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC]
    RewriteRule ^(.*)$ - [F]