Efficient and robust internet content filtering has long been a desirable and sought-after feature. This is true not only for controlling the content that a user is exposed to on the internet, but also for recording that activity and allowing restrictions to be overridden as needed. Filtering needs to be customizable to the needs of limited users and easily administrable by the people in charge of applying the filters, such as administrative users, for the limited user being filtered. Naturally, these filters are expected to act seamlessly with the system, be enforced broadly across the system, and actions taken by them need to be easily discoverable by the limited users, so that things don't seem to break for unknown reasons.
There are a number of systems available today that perform internet content filtering with varying degrees of success. Some only work within a particular web browsing client application, while others do function across multiple internet applications, but have major drawbacks in terms of compatibility and interoperability with the operating system and its components, such as firewalls. Some parties provide only simple client post-filtering that is not easily updatable. It would therefore be desirable to address many of the drawbacks of current filtering systems, and provide tight integration with an operating system running on a computing system, in order to allow not only broad enforcement but to give great flexibility and discoverability.
In one specific but not limiting scenario, it would also be desirable to provide a framework that will enable parents to restrict the activities of their children (including the internet content that they will be exposed to). While this type of framework is targeted at protecting kids, the same technology could be applied in other situations as well (perhaps for elderly parents, business environments, or even self-filtering).
Various mechanisms are disclosed for providing internet content filtering. For example, a filtering service is provided that may have a first cache and a second cache, where the first cache has cross-user resources and the second cache has cross-application resources that are used to efficiently perform content filtering. Thus, in one aspect, a filter stack is provided and this filter stack is configured to access at least one of these caches. Such accessing of caches obviates the need to obtain these resources from an external computing environment, thus improving the overall operation of a computing system running the filtering service.
By way of example only and not limitation, the filtering service may receive a request for making a judgment regarding a stream of content, that is, whether the stream should be allowed to pass into or out of the computing system. Upon such a request, the filtering service may process the request using the filter stack, where the filter stack is configured to execute typical computing objects. Lastly, the filter stack may access at least one of the caches during the execution of the objects. This may result in resources used for one user or for one application being leveraged and used for another user or another application.
It should be noted, that this Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
The foregoing Summary, as well as the following Detailed Description, is better understood when read in conjunction with the appended drawings. In order to illustrate the present disclosure, various aspects of the disclosure are shown. However, the disclosure is not limited to the specific aspects discussed. The following figures are included:
Overview
This Detailed Description is divided into three parts. In the first part, corresponding to
I. Architectural Aspects of Internet Content Filtering
For example, the filtering service 104 can make policy judgments that a networking stack 102 can then enforce (the inner workings of the networking stack 102 are described in more detail in one of the related applications listed above). Thus, the networking stack 102 allows for a computing system on which it (and the filtering service 104) subsist, to communicate 154 via the internet 103 with some remote computing devices 105. Such communications 154 are monitored by the networking stack 102 and modified, if need be. Interestingly, judgments as to what modify and how to modify such communications 154 can be made by the filtering service 104. The networking stack 102 can ask 130 the filtering service 104 to make policy decisions, and the filtering service 104 can in turn provide 130 the networking stack 102 with instructions, so that the networking stack 102 can implement or execute those instructions.
The filtering service 104 can not only make the aforementioned policy judgments based on its own stored policy decision which may persist in a persistence store or in a filtering settings store 106, but it can also obtain 152 them from a remote service, such a website ratings service 107 that provides policy judgments regarding what ratings content should have (other policy services, of course, can also be contacted, and this is merely an exemplary service 107). Thus, the filtering service 104 can contact 132 the filtering settings store 106 in order to inquire what policy judgments may be relevant to some communications 154 with external or remote computing devices 105 or services. Moreover, the filtering settings store 106 can contain information such as when filtering should be on or off (for particular users and applications, system-wide), when certain events should be logged nor not logged, and which web sites should be accessible and which should be blocked.
The filtering service 104 may also communicate 134 with a logging service 108 that may log any communications a user is engaging in via some applications that are subject to the filtering service's 104 supervision—or at least those applications and programs that are installed on the same computing system as the filtering service 104. Logging can include, but is certainly not limited to, recording which URLs a user either has visited or has attempted to visit. Thus, in one aspect of the presently disclosed subject matter, the filtering service 104 can write web events to the logging service 108, via some API, for example, and it can also write any system events to the logging service 108.
Various other components can communicate with the filtering service 104, whether directly or indirectly. For instance, an administrative override application 114 can override certain blocked URLs to unblock them—or vice versa, to block unblocked URLs. The administrative override application 114 can communicate 144 with the above mentioned logging service 108, to write override events. It can also communicate 142 with and override contents of the filtering settings store 106, such as to set particular user settings. Lastly, it can directly access 146 the filtering service 104 in order to retrieve override request details.
Another component that the filtering service 104 may communicate 140 with, albeit indirectly in the disclosed architecture of
Other components, such as an application 118 and some web restriction program 116 can request 150 and 148, respectively, that certain events be overridden in the filtering settings store 106. The Application 118 can be any application on a computing system, such as e-mail, web browser, instant messaging, and so on; the web restriction program 116 can be any override executable. As indicated above, the application 118 can directly communicate 151 with the networking stack 102—for example, anytime the application 118 either receives or sends content via the internet 103. Furthermore, the application 118 can communicate 153 with the web restriction program 116 in order to request override indirectly via an embedded link in an error page.
Lastly, an activity report viewer 110 can access 138 the filtering settings store 106 in order to get user settings. Likewise, it can access 136 the logging service 108 to read activity logs. The purpose of discussing the components of
Thus, in one aspect of the presently disclosed subject matter, a computing system containing such a filtering service 104 is provided, where the filtering service 104 is used in the computing system for filtering the traffic of content associated with the system. In broad terms, a first cache 200 for storing a first resource can be provided, where the first cache 200 is configured to be accessed for data applicable to at least one user. This means that data for a first user, such as Toby, may be stored in the cross-user cache 200 and this data may be further accessed at a later time by a second user, say, Suzy. Thus, the cross-user cache 200 may provide data sharing and leveraging for multiple users.
Next, a second cache 202 for storing a second resource can be provided, where the second cache 202 is configured to be accessed for data applicable to at least one application. This in turn, allows for different applications to access the same cache 202. An e-mailing application and a browser can use this cache 202 in order to ultimately obtain judgments whether some stream of data should be filtered or not. Moreover, this cache 202 may not only be used by different kinds of applications but also different applications of the same kind, say, two web browsers manufactured by two different parties.
Since the filter stack 204 may be configured to access either one the caches 200 and 202 in order to filter content based on the first resource and the second resource, respectively, it provides a more efficient framework for filtering, since the resources don't have to be downloaded from elsewhere (or looked up in lists), if the resources may be categories corresponding to URLs. The resources may, in one aspect, be descriptors of websites. They can categorize websites as violent, drug-based, sex-based, containing weapons, and so on. In one particular aspect, which is merely exemplary and not limiting, the filtering service 104 may filter content based on at least one of the following (or some combinations) of categories: alcohol, bomb-making, drugs, gambling, hate speech, mature content, pornography, sex education, tobacco, weapons, and so on. Interestingly enough, such categorization may also extend to the type of application that is being used, whether web-email, web-chat, or other such programs.
The filtering service 104 is flexible enough to filter in a variety of ways, whether the filtering is level-based or type-based or anything else. In the former case, level-based filtering may include having a low level, a medium level, and a high level of scrutiny for the type of content that a data stream may contain. In the latter case, type-based filtering may include aged-based filtering (for example, not allowing access to the internet for kids under the age of 10) or list-based filtering (for example, not allowing access to specific websites that appear somewhere on a “black list”).
Moreover, the content filtering by the filtering service can be based on web restrictions, time limits, ratings, program-type and/or personal controls. For example, certain web sites can be outright restricted; some users may have time limits as to how long they may use a computing system-or between what hours a computing system may be used; certain programs, such as games, can also be rated and thus restricted if the rating does not square with policy decisions accessed from a filtering settings store 106; certain programs may be restricted, such as instant messaging, if a parent, for instance, sees a child spends too much time using this program; and lastly, settings may have particularized controls in place that use a combination of these restrictions and other restrictions that may be implemented by a parent or some administrator of the computing system.
Furthermore, as can be seen in
Furthermore, as in clear from
Next,
If at block 302 the answer is that, yes, the service is enabled for the user, then the stack inquires, at block 304, whether the internet is now enabled for the user. If at block 304, the internet is not enabled for the user, any inbound or outbound URL will be blocked. If the answer is yes, the stack filter asks whether the application the user is using is exempted from filtering—i.e. whether it is on an exemption list. If it is on such a list, URLs are allowed. If, on the other hand, the application is not exempted, the stack filter continues on to block 308.
At block 308, the filter stack has to decide whether a given URL is explicitly blocked. If it is, then the URL is not allowed to reach a user's application. If it is not, at block 310, a determination is made whether it is explicitly allowed. If it is explicitly allowed, the URL is able to reach the user's application.
At block 312, a determination can be made as to whether only URLs explicitly allowed should be allowed. If only explicitly allowed URLs are allowed, any URL that was not explicitly allowed will be blocked. Otherwise, it will be allowed barring any other rules explicitly blocking it.
Next, in
At block 316, a determination is made as to whether URLs contain descriptors or categories that are explicitly blocked. If so, the URLs are blocked. However, if this is not the case, at block 318, a determination is made whether URLs contain descriptors or categories that are explicitly allowed. If so, the URLs are allowed. If that is not the case, then another determination is made at block 320.
At block 320, a determination is made as to whether only descriptors explicitly allowed should be allowed (or whether, potentially, others could be allowed also). If the answer is yes, than any URLs having passed on so far will be blocked. Otherwise, if the answer is no, the filter stack will go on to block 322 and by default allow any URLs that have passed through the crucible of blocks 300-320.
II. Visual Aspects of Internet Content Filtering
In addition to the architectural aspects of the presently disclosed subject matter, there are numerous visual aspects, of which, a few are presented in this section, merely by example, however, and not limitation. In
The first question 402 that the interface might present to user or administrator is whether the individual wants to block some web content. Next, a second question 404 can be asked that concerns the filtering of web content. This second question 404 might want input regarding the restriction level of the filtering to be performed. For example, one restriction level might allow only websites on an allowed websites list; another restriction level might allow kids websites only; yet another might provide a generic medium restriction; still another may provide a low restriction; finally, the interface 400 might allow for a custom restriction to be made by the individual.
The third question 406 the interface 400 might present may concern the type of content (or the category of content or the description of content). For example, any URLs that display in any form blocked content will not be accessible to “Toby”. Per
Lastly, as a catch-all option 408, websites that cannot be rated for some reasons may be blocked by default. This interface 400 can provide numerous other inputs to individuals wishing to filter web content. If the user is a developer, the interface could even be reconfigured to provide access to functionalities discussed in other parts of the presently disclosed subject matter, as for example, the subject matter referencing
Next,
In addition, the window 500 can display a mechanism 506 to get back to some other page via a link. Also, the window 500 can allow the user to retry entering the website 502 again, if after consultation with an administrator or a parent, the user received permission to enter the site 502. Thus, the user might refresh 508 the window 500 in order enter the site 502. Furthermore, a request can be made by a user to override a blocked window via a link (not illustrated) which may be embedded in the window 500.
In order to support this functionality, an API can be provided to request permission to view a blocked page. Browsers can call this API to start a process where a user can request access. For example, the following code might be implemented to this end:
Next,
In another aspect of the presently disclosed subject matter,
Moreover, various settings 706 may be stipulated. For example, web restrictions may be set to control allowed websites, downloads, and other such uses. Time limits can be set, in order to control the times when a user can use a computer. For example, Toby's parents can set computer use between 5 p.m. and 9 p.m., corresponding to the times when Toby should be doing his homework, between getting out of school and going to sleep, respectively.
Furthermore, the settings can include age ratings for games, in order to control the games by content or title. Such control of games may extend not only to games played locally on the computer the user is using, but also to online games. If a parent knows that some games are too violent, such games can be specifically blocked with another finctionality, such as “Block specific programs.” This, then, illustrates the idea that any of the settings may be set in any various combinations in order to obtain the most desired filtering mechanism.
Lastly, latest activities can be viewed by the administrator or parent. Such logging of activity was discussed with reference to
III. Exemplary Implementations of Internet Content Filtering
Next, the filtering stack discussed in reference to
Following this step, a second step can be taken, at block 802, that may comprise of the processing of the request using a filter stack, where the filter stack is configured to execute objects. This processing step can signal the beginning of execution of objects on the stack, at the stack starts popping off completed tasks or pushing on the stack of new objects.
At block 804 a third step can be taken that may include accessing at least one of a first cache and a second cache, where the fist cache is configured to store a first data applicable to at least one user and where the second cache is configured to store a second data applicable to at least one application. Such accessing of cross-user and cross-application data, as discussed above in reference to
At block 806, a fourth step may comprise of using at least one of the first data and the second data while executing at least one of the objects. So, during the execution of whatever objects are stacked on the filtering stack, the filtering stack can reference either of these two caches for any identification of web sites with their status as allowed or not allowed based on the content of those web sites.
Of course, these four steps don't have appear in the order they are depicted in
Furthermore, a sixth step could be taken, at block 812, that may comprise of accessing a third data from a remote service in order to provide the third data to at least one of the first cache and the second cache. This accessing can be done in addition to the accessing of the filter settings store 106 that was discussed above. The remote service can be the website ratings service 107 illustrated in
The steps taken so far have been cumulative in the sense that they may follow one another. However, some steps discussed so far can have specific implementations. For example, step 804 can be further implemented as block 804′, which provides for accessing at least one of the first cache and the second cache, is performed by the filtering service for one of a first user and at a later time for a second user, and for one of a first application and at a later time for a second application. As discussed above already, this step may allow for leveraging of stored information for one user by another user or for use of information stored for one application by another application.
Such steps could also be implemented in computer readable medium form. For example, a computer readable medium bearing tangible computer executable instructions could comprise of the steps of beginning to execute objects on a filtering stack, then accessing one of a first cache and a second cache at some point during the execution of the objects on the filtering stack, and finally making a determination based on the accessing of one of the first cache and the second cache whether at least a portion of a stream of data should be allowed to one of pass into a computing system and pass out of a computing system.
The making of the determination whether the at least portion of the stream of data should be allowed to one of pass into a computing system and pass out of a computing system could be provided as a result to a remote system, such as the networking stack 102. Furthermore, the making of the determination whether the at least portion of the stream of data should be allowed to either pass into a computing system or pass out of a computing system, could be based on remote data obtained from a remote source, such the ratings service 107 in
At last,
It should be noted that the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. Thus, the methods and systems of the presently disclosed subject matter, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, where, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the subject matter.
In the case of program code execution on programmable computers, the computing device may generally include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. One or more programs that may utilize the creation and/or implementation of domain-specific programming models aspects of the present subject matter, e.g., through the use of a data processing API or the like, are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system. However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.
Lastly, while the present disclosure has been described in connection with the preferred aspects, as illustrated in the various figures, it is understood that other similar aspects may be used or modifications and additions may be made to the described aspects for performing the same finction of the present disclosure without deviating therefrom. For example, in various aspects of the disclosure, internet content filtering mechanisms were disclosed. However, other equivalent mechanisms to these described aspects are also contemplated by the teachings herein. Therefore, the present disclosure should not be limited to any single aspect, but rather construed in breadth and scope in accordance with the appended claims.
This application claims benefit to application Ser. No. 60/716,062, filed September 12, 2005, titled “Internet Content Filtering”. This application is also related to application Ser. No. 11/266,143, filed Nov. 3, 2005, titled “Compliance Interface For Compliant Applications; and application Ser. No. 60/716,294, filed Sep. 12, 2005, titled “Protocol-Level Filtering”, and its non-provisional counterpart bearing the same title, application Ser. No. ______ (attorney docket number MSFT 5443/314366.02).
Number | Date | Country | |
---|---|---|---|
60716062 | Sep 2005 | US |