昨天我去面试,他们问了我两个我无法回答的问题。有人能给我指一下下面的正确方向吗?
- 防止网站抓取网页的方法
- 如何防止网站中的SQL注入
- 通常通过使用
robots.txt
文件来避免报废 - 他们很可能会询问如何防止SQL注入,而不是添加它。这是通过输入净化来完成的
以下是一些可以防止爬行/刮擦的方法
- 您可以进行一些基本的HTTP标头验证
- 您可以使用一些第三方工具
- 你可以使用JS渲染/动态内容,这会增加一层难度
- 你可以使用诸如登录之类的东西,并限制对某些区域的访问
- -您可以使用robots.txt文件来控制搜索爬网程序
- -您还可以使用rel="_nofllow"属性装饰超链接
用于SQL注入保护
- -您可以尝试从您的数据库(n层应用程序)中提取一些级别,其中实际的web应用程序不会直接与数据库交互
- 正确消毒、编码和处理所有用户输入
- 不要依赖自己的验证和卫生设施,使用由开发团队组成
- 在应用程序中使用单元测试,确保应用程序能够处理所有类型的输入,并且故障安全
- 确保您没有直接从数据库
- 为了防止抓取,最好的方法是让网页在每次加载时都有一些不可预测的不同之处。每个页面使用标签等的唯一标识符
- 不要将输入包括在动态SQL中。请改用绑定
您可以使用htaccess文件/代码来阻止坏的bots/scraper并防止SQL注入。
- 请参阅此链接: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]