Mr. Apache

.htaccess, seo, robots.txt, wordpress, apache, mod_rewrite, google, blogging

24.8.09

LinuxHelps.com » Blog Archive » Securing /tmp and /dev/shm

LinuxHelps.com » Blog Archive » Securing /tmp and /dev/shm: "Securing /tmp and /dev/shm

The first step is to check if /tmp is already secure. Some data centers do not create a /tmp partition while others do.
df -h |grep tmp

If that displays nothing then go below to create a tmp partition. If you do have a tmp partition you need to see if it mounted with noexec.
cat /etc/fstab |grep tmp

If there is a line that includes /tmp and noexec then it is already mounted as non-executable. If not follow the instructions below to create one without having to physically format your disk. Idealy you would make a real partition when the disk was originally formated, that being said I have not had any trouble create a /tmp partition using the following method.

Create a ~1000Mb partition
cd /dev/; dd if=/dev/zero of=tmpMnt bs=1024 count=1000000

Format the partion
mkfs.ext2 /dev/tmpMnt

When it asks about not being a block special device press Y

Make a backup of the old data
cp -Rp /tmp /tmp_backup

Mount the temp filesystem
mount -o loop,noexec,nosuid,rw /dev/tmpMnt /tmp

Set the permissions
chmod 0777 /tmp

Copy the old files back
cp -Rp /tmp_backup/* /tmp/

Once you do that go ahead and restart mysql and make sure it works ok. We do this because mysql places the mysql.sock in /tmp which neeeds to be moved. If not it migth have trouble starting. If it does you can add this line to the bottom of the /etc/fstab to automatically have it mounted:

Open the file in vi:
vi /etc/fstab

Now add this single line at the bottom:
/dev/tmpMnt /tmp ext2 loop,noexec,nosuid,rw 0 0

While we are at it we are going to secure /dev/shm. Look for the mount line for /dev/shm and change it to the following:
none /dev/shm tmpfs noexec,nosuid 0 0

Umount and remount /dev/shm for the changes to take effect.
umount /dev/shm
mount /dev/shm

Next delete the old /var/tmp and create a link to /tmp
rm -rf /var/tmp/

ln -s /tmp/ /var/

If everything still works fine you can go ahead and delete the /tmp_backup directory.
rm -rf /tmp_backup

You /tmp, /var/tmp, and /dev/shm are now mounted in a way that no program can be directly run from these directories. Like I have said in other articles there are still ways in but this is one of the many layers of security you should have on your system."

Continue Reading...
28.7.09

AskApache Advanced Webmasters :: Add-ons for Firefox

AskApache Advanced Webmasters :: Add-ons for Firefox: "1. Add-ons for Firefox
2. Collections

AskApache Advanced Webmasters

* Log in to add this collection to your favorites.
* 1 subscriber
*

About This Collection

For those doing Advanced Web Development as a career. FAST and unobtrusive add-ons that I personally use to build/optimize/debug and work on websites, and everything that includes.

Created by: AskApache

Updated: July 28, 2009
56 Add-ons"

Continue Reading...

Add-ons for Firefox: Collections by Ask Apache

User Info for AskApache :: Add-ons for Firefox: "Collections by Ask Apache

AskApache Advanced Webmasters
For those doing Advanced Web Development as a career. FAST and unobtrusive add-ons that I personally use to build/optimize/debug and work on websites, and everything that includes.

Favorite Collections

AskApache Advanced Webmasters
For those doing Advanced Web Development as a career. FAST and unobtrusive add-ons that I personally use to build/optimize/debug and work on websites, and everything that includes.
Firebug Add-ons
Add-ons that extend Firebug. From http://www.webresourcesdepot.com/13-must-have-add-ons-to-strengthen-firebug/. Unfortunately, not all the add-ons are hosted on AMO.
Hyperfox - Unstoppable Browser
Maximizes window space, all the necessary keyboard & mouse shortcuts, customize the web with Greasemonkey, Stylish & Nuke Anything, save anything with DownThemAll, Batchdownload, Screengrab & pdfit"

Continue Reading...
4.3.09

Guidelines for proper mailing list management

http://www.mail-abuse.com/an_listmgntgdlines.html

Mailing lists have a long and venerable history on the Internet. Mailing lists are an excellent vehicle for distributing focused, targeted information to an interested, receptive audience. Consequently, mailing lists have been used successfully as a highly effective direct marketing tool. Unfortunately, mailing lists are also vulnerable to misuse through a variety of means. An all-too-common example is where an individual is forge subscribed to a high number of mailing lists and must take extraordinary measures to be removed. Also, some marketers misuse mailing lists, often through a lack of knowledge about longstanding Internet customs and rules, or because they attempt to apply direct paper mail methodology to the electronic realm. The guidelines below are intended to assist list administrators in establishing basic list management procedures that should help them avoid the most common pitfalls. Good list management also pays off in other ways such as maintaining a high response rate and reducing costs associated with managing complaints.
MAPS Principles All communications must be consensual. No one should ever have to unsubscribe from a list they did not intentionally subscribe to.
Internet Fundamentals Those who desire to establish responsible list management practices must be aware that there are certain fundamentals inherent to the structure of the Internet, and to how the email system functions across the Internet. Among those that are pertinent to these guidelines are the following: Traffic on the Internet flows by mutual agreement.
This is not a taxpayer-funded highway system. The Internet is a network of networks, interconnected in a myriad of ways. Most of the networks that compose the Internet are privately owned. When an entity connects its system to the Internet it immediately becomes dependent on others to see to it that its traffic reaches its destination. Those others in turn have a responsibility to their owners or shareholders to maintain their networks and keep traffic flowing smoothly. This fact gives network and system owners and operators considerable say over the traffic they allow to pass over their networks. Internet entities are responsible for their own actions.
Traffic flows from one network to another because of such things as peering agreements, where two networks agree to carry one another's traffic. The Internet is made up of many interconnected peers; it is not only expected, but necessary that those peers, and all those systems connecting to them, act responsibly. The larger the system, and the more traffic it desires to transit the network, the greater the expectations and responsibilities incumbent upon it. The recipient subsidizes the cost of delivery.
This is not a postal mail or parcel system, where the sender pays the full cost of delivery. Every email box belongs to an individual, a group, an organization, perhaps a corporation; in any event, its existence is most often paid for by someone besides the sender of a message. This fact gives the recipient considerable say over what will be accepted for delivery, and it is why MAPS emphasizes that all communications must be consensual.
Guidelines The following guidelines are offered as a statement of Internet standards and best current practices for proper mailing list management. There must be a simple method to terminate a subscription.
Mailing list administrators must provide a simple method for subscribers to terminate their subscriptions, and administrators should provide clear and effective instructions for unsubscribing from a mailing list. Mailings from a list must cease promptly once a subscription is terminated. There should be alternative methods for terminating a subscription.
Mailing list administrators should make an "out of band" procedure (e.g., an email address to which messages may be sent for further contact via email or telephone) available for those who wish to terminate their mailing list subscriptions but are unable or unwilling to follow standard automated procedures. Undeliverable addresses must be removed from future mailings.
Mailing list administrators must ensure that the impact of their mailings on the networks and hosts of others is minimized. One of the ways this is accomplished is through pruning invalid or undeliverable addresses. Mail volume must take recipient systems into account.
List administrators must take steps to ensure that mailings do not overwhelm less robust hosts or networks. For example, if the mailing list has a great number of addresses within a particular domain, the list administrator should contact the administrator for that domain to discuss mail volume issues. Steps must be taken to prevent use of a mailing list for abusive purposes.
The sad fact is that mailing lists are used by third parties as tools of revenge and malice. Mailing list administrators must take adequate steps to ensure that their lists cannot be used for these purposes. Administrators must maintain a "suppression list" of email addresses from which all subscription requests are rejected. The purpose of the suppression list would be to prevent forged subscription of addresses by unauthorized third parties. Such suppression lists should also give properly authorized domain administrators the option to suppress all mailings to the domains for which they are responsible. The nature and frequency of mailings should be fully disclosed.
List administrators should make adequate disclosures about the nature of their mailing lists, including the subject matter of the lists and anticipated frequency of messages. A substantive change in the frequency of mailings, or in the size of each message, may constitute a new and separate mailing list requiring a separate subscription.
Unconfirmed Mailing Lists The following explanations and examples are offered as information regarding mailing lists and confirmation of email addresses to be added to mailing lists. New subscriber's email addresses must be fully verified before mailings commence.
This is usually accomplished by means of an email message sent to the subscriber's email address to which they must reply, or containing a URL which the subscriber must visit, in order to confirm their desire and permission to have their email address added to the mailing list. However it is implemented, a fundamental requirement of all lists is for full verification of all new subscriptions. Terms and conditions of address use must be fully disclosed.
Mailing list owners or managers must make adequate disclosures about how subscriber addresses will be used, including whether or not addresses are subject to sale or trade with other parties. Also, conditions of use should be visible and obvious to the potential subscriber. For example, two lines buried deep within a license agreement do not constitute adequate disclosure. Acquired lists must be used for their original purpose.
Those who are acquiring fully verified mailing lists must examine the terms and conditions under which the addresses were originally compiled and determine that all recipients have in fact confirmed their permission to have their email address added to additional mailing lists of the type that the person acquiring the list intends to operate. One subscription, one list.
Addresses should not be added to other lists without fully verified consent of the address owner. It should never be assumed that subscribers to a list on one subject want to be added to another list on the same subject, let alone a list on another subject, even if the new list is being operated by the same list owner or manager. A notification about the new mailing list may be appropriate on the existing mailing list, but existing subscribers should never be subscribed automatically to the new list.
Methods of Full Verification Below are some examples of the many methods by which one can ensure that email addresses are fully verified before they are added to a mailing list. Please note that there is more then one way to verify email addresses, and MAPS does not endorse any particular method. Closed Loop Confirmation.
Closed loop confirmation is frequently discussed as a good way to verify email addresses before adding them to a mailing list. Closed loop confirmation (also referred to as "full confirmation", "full verification", and even "double opt-in") refers to the process by which, when a list owner or manager receives a subscription request, they send a confirmation message which requires some affirmative action on the part of the owner of the email address before that email address is added to the mailing list. Confirmations which require the email address owner to take action to remove themselves from a list are opt-out, NOT verified opt-in. While anybody can type any email address into a subscription form, only the true owner of that email address will actually receive email at that email address. Thus, if there is an affirmative reply to the confirming email, the list owner can be certain that the owner of the email address is actually the one who subscribed to their mailing list, and that they truly intended to subscribe for their mailing list. Closed loop confirmation is not the only way for a mailing list owner to confirm addresses before they are added to their mailing list. In some cases it may be the easiest way for the mailing list owner to perform confirmation, but it is by far not the only solution.
Email Addresses Obtained Via a Webform.
Where email addresses are obtained via a webform, the mailing list owner should create a system to verify those addresses collected. This could include email confirmation, including a specific URL that must be visited by the owner of the email address to unlock the email address and subscribe it to the mailing list. This could also include sending a unique token via email that must be returned by the owner of the email address (such a system must be able to deal with auto-responders and have a way to verify that the returned email does not come from an auto-responder (such as the auto-responder found on most role accounts)). Email Addresses Obtained Through a Business Transaction or Relationship.
Where addresses are obtained as part of a service or business transaction, the mailing list owner should implement a system to verify those addresses before adding them to the mailing list. This could be done by using the email confirmation technique. It could also be done by contacting the owner of the email address from other information obtained, as long as there are records kept of this confirmation. In the case that a business does sales, and requires an email address to send a confirmation email to before processing the order, as long as it is made clear that the policy is that the email address used to conduct business will be added to their mailing list, and the owner of the email address confirms the order before the address is added to the mailing list, and the business keeps records of these transactions, then the email address is considered to have been confirmed before addition to the mailing list. Email Addresses Obtained From Another Mailing List.
Where an email address was on a verified mailing list, and the policies and verification for that original mailing list clearly state that by confirming for the original list, the owner of the email address agrees to having their email address given to other list owners or managers, and placed on other mailing lists, then that email address is considered to be confirmed for subsequent mailing lists as well provided those mailings reasonably fall within the parameters disclosed in the original sign-up. If the original mailing list owner or manager has in fact implemented mailing list policies and procedures to include a statement that notifies the owner of an email address that by confirming their email address to be added to the original mailing list they also give consent to the list owner to redistribute their email address to other mailing lists at the list owner's discretion, or the distribution of that email address falls outside the limits of the disclosure, then the owner of the mailing list in question should provide this as proof of verification. In all cases where a mailing list owner or manager wishes to add email addresses from one list to another, whether the original list is in the list owner's or manager's control, or obtained from a third party, any email addresses on the original list which are not fully confirmed as to the original list must be fully confirmed as to the new list, regardless of any perceived permission granted by the owner of the email address to transfer their email address from one list to another.

Continue Reading...
1.3.09

Conducting Cybersecurity Research Legally and Ethically

Conducting Cybersecurity Research Legally and Ethically

Aaron J. Burstein
University of California, Berkeley (School of Law)
aburstein@law.berkeley.edu

Abstract

The primary legal obstacles to conducting cybersecurity are not outright prohibitions but rather the difficulty of determining which of a large set of complex statutes might regulate a given research project. Privacy, computer abuse, tort, and contract law are all potentially applicable. Moreover, even when the law permits a research activity, researchers may wonder whether it is ethically permissible. This paper seeks to clarify these issues by explaining the areas of law that are most generally applicable to cybersecurity researchers and offering guidelines for evaluating ethical issues that arise in this area of research.

1 Introduction

Research occupies a central role in cybersecurity policy in the United States. It may provide ways to reduce and mitigate the increasingly serious threats to the computers and networks that the United States (and other highly developed countries) have come to rely upon so heavily. Funding this research has been a priority for Congress as well as the National Science Foundation, DARPA, the Department of Homeland Security, and other agencies [11]. As networked information systems become pervasive, this commitment to research is essential.
But a fog of legal and ethical uncertainty hangs over cybersecurity research. A variety of federal and state statutes either prohibit activities that would provide cybersecurity researchers with data about real systems and real attackers, or cast such doubt on research activities that researchers modify their programs or conduct them with a sense of uncertainty as to their legality. Cybersecurity researchers (and officials within the organizations that employ them) may also suspect that certain things are illegal when, in fact, they are not; but researchers nonetheless avoid certain paths. Conversely, researchers may view the legality of a certain course of research as license to pursue it without regard to ethical considerations.
Ethical questions lurk beyond these legal issues and also deserve researchers' attention. Though the statutes discussed here contain expansive prohibitions on certain kinds of conduct, they do not address all instances in which researchers may find themselves wondering, "Is this the right thing to do?" In addition, many cybersecurity researchers present their data collection and analysis plans to institutional review boards (IRBs) and information officers (e.g., CISOs) for approval. These individuals and bodies often are unfamiliar with cybersecurity research in general and the problems that research face collecting data in particular. They will often wonder about how proposed research affects individual privacy and the security of the organization's information systems. The better researchers can explain how their activities will affect these interests, the easier they may find it easier to obtain approval and cooperation.
The overall argument in this paper is twofold. First, though U.S. law does not permit everything that cybersecurity researchers would like to do, relatively few research activities are flatly prohibited.1 Nonetheless, uncertainty among researchers about what the law actually says, as well as doubt about the ethics of some activities, may hold back certain research efforts. Though privacy is an important part of this picture, computer abuse, copyright, tort, and contract law pose issues as well. Second, this paper emphasizes that cybersecurity researchers work within organizations whose interests typically include far more than improving cybersecurity. Thus, this paper strives to provide ways to allow cybersecurity researchers to think through the legal and ethical dimensions of their research, so that they may better explain it to non-experts and discuss how it is consistent with an organization's overall interests. The discussions in this paper revolve around general problems that cybersecurity researchers face, rather than particular research efforts. The hope is that whatever is lost by avoiding discussion of specific research will be recovered by preventing embarrassment to researchers and encouraging a frank discussion within the cybersecurity research community.
Section 2 reviews previous work examining legal issues in cybersecurity research. Section 3 explains the legal and ethical issues surrounding collecting and sharing network datasets, ending with a proposal to create a cybersecurity research exception to federal communications privacy laws. Section 4 discusses issues associated with running malicious code on research machines. Section 5 analyzes the law and ethics of mitigating attacks, while Section 6 does the same for publishing results. Finally, Section 7 concludes with a few suggestions for action by cybersecurity researchers with respect to their own research, within their organizations, and within the political arena.

2 Background

A few legal scholars have examined some of the legal issues facing cybersecurity research. Liu, for example, has examined the effects of the Digital Millennium Copyright Act (DMCA) on cryptography research [13]. He concluded that the DMCA's prohibitions on circumventing "technical protection measures" on copyrighted works are so broad, and the encryption research exception is so narrow, that researchers are justified in fearing liability for researching and publishing about vulnerabilities in certain encryption schemes.
Research using honeypots and honeynets raises significant questions about liability under the federal Computer Fraud and Abuse Act (CFAA) and communications privacy statutes (including the Wiretap Act and Pen Register/Trap and Trace Devices Act). Salgado analyzed a range of honeynet set-ups and found that the risk of liability under the communications privacy statutes can best be reduced by incorporating honeynets into production systems and networks[20]. He did not, however, give much attention to researcher liability under the CFAA, the possibility of which must be taken into account given that more recent honeynet designs involve more interaction with attackers.
Finally, Ohm et al. examined statutory communications privacy (including the Stored Communications Act in addition to the statutes named above) issues arising in conjunction with collecting, publishing, and using network traces [17]. They argued that these statutes are sufficiently vague to make it unclear whether a given trace collection will violate one or more of them. Nonetheless, they argued, legislative reform of these laws is probably unnecessary and, in any event, would be unlikely to add much clarity for cybersecurity researchers.

3 Obtaining Data from Networks

Data from real networks is critical to several areas of cybersecurity research. Intrusion detection research, for example, depends on access to large volumes of network traffic in order to generate signatures of attacks while minimizing false positives and false negatives. The stresses of real systems may also be necessary to test the performance of real-time collection and analysis technologies. In addition to their importance to individual research efforts, datasets can contribute to a broad picture of the Internet when shared among researchers [6].

3.1 Collecting Network Traces

As many cybersecurity researchers are aware, however, federal communications privacy laws limit access to the traffic on computer networks.2 In particular, federal law provides the following:
  • Wiretap Act [1]: Prohibits real-time interception of the contents of electronic communications. A "provider exception," however, permits the employees of a network operator to intercept and record communications to the extent necessary to protect the "rights and property" of the operator.
    Unfortunately, the distinction between "content" and "non-content" information is not always clear. In particular, the distinction is not as simple as the separation between packet header and payload. The contents of a communication are defined to mean the "substance, purport, or meaning" of the communication, while non-content information refers to both addressing information as well as records pertaining to a network user, e.g., billing information. Under these definitions, courts have held IP addresses (both sender and receiver) and the To: and From: fields in e-mail messages to be non-content information [25], while the Subject field is commonly regarded as contents [15]. The same definitions of "contents" and "non-content information" apply to the two statutes discussed below.

  • Pen Register/Trap and Trace statute [5] (commonly referred to as the "Pen/Trap statute"): Prohibits real-time interception of the non-content portions of electronic communications. The Pen/Trap statute contains a provider exception that is similar to the one provided under the Wiretap Act. Once non-content data are stored, analysis and disclosure of the data are subject to the Stored Communications Act.

  • Stored Communications Act (SCA)[4]: Prohibits providers of "electronic communications service to the public" from knowingly disclosing the contents of customers' communications, as well as non-content records relating to customers' communications. The SCA imposes little, if any, restrictions on uses of data within the organization that collects them. Publishing or sharing the same data with employees of other organizations, however, implicates the more restrictive disclosure rules discussed in Section 3.2.

Taken as a whole, there are two salient features of this complex set of laws. First, they contain no research exceptions. This is in contrast to other privacy statutes, such as the Health Insurance Portability and Accountability Act (HIPAA), which restricts disclosures of personal health information but provides means for researchers to obtain such information both with and without individual consent. The provider exceptions to the Wiretap Act and Pen/Trap statute are the closest that these laws come to a research exception. Making use of this exception requires close cooperation between researchers and officials from their institutions.
The second point to note about the electronic communications privacy statutes is that they create a patchwork of prohibitions and exceptions that are difficult for researchers and research organizations to navigate. As the summaries above indicate, the rules for accessing communications contents are different from those governing access to addressing information; and access to data in real-time versus in storage introduces still more variations in the law.
Thus, the Wiretap Act and Pen/Trap statute pose obvious hurdles to cybersecurity researchers. Consider the issue of consent under the Wiretap Act. Given that testing, say, intrusion detection algorithms may require access to traffic at a university's gateway, obtaining individual consent is probably unworkable. Universities typically inform their network users, through banner notices or terms of use, that the network is monitored. It is unclear, however, whether these notices cover all situations of interest to researchers (e.g., large-scale packet trace collection). Even if a university obtains broad consent to monitors its network users, administrators are likely to give considerable weight to other institutional interests (e.g., student or faculty backlash) that may cut against increasing researchers' access to network data. An empirical study of institutions' policies and practices could shed light on this area.
Making use of the provider exception to the Wiretap Act or the Pen/Trap statute obviates the need for consent, but it requires coordination with the appropriate officials within the institution that operates the network. For large organizations, the key official is likely to be a chief information security officer (CISO) and his or her staff. Convincing a CISO that research that involves tapping into the contents of communications on the institution's network is likely to involve more than an assertion that an appropriately structured research project is legal. The CISO will also want to ensure that the fits the institution's mission and policies. It is here that attention to ethical considerations may be valuable.
The question that researchers and institutional officials must confront is: Even if it is legal to allow research that involves real-time monitoring and analysis of communications, why should the institution allow it? The broader background of communications privacy law and policy provides a few answers.
First, research that fits within the provider exception is, by definition, potentially applicable to protecting the institution's network. A close relationship between researchers and staff with responsibility for keeping a network operational may bring immediate benefits-improved security-to the network and its users.
A second answer is based on a more basic look at the interests that the Wiretap Act was intended to protect. Giving cybersecurity researchers access to real-time communications streams would do little to undermine these interests. When the Wiretap Act was first enacted in 1968, and even when it was expanded in 1986 to cover electronic communications, intercepting communications in real time was by far the easiest-and perhaps the only-way of obtaining their contents. The advent of essentially unlimited storage of email and other forms of electronic communications, however, has made it possible for law enforcement officials and private parties to obtain contents from stored communications. The individual informational privacy interest is in the contents of a communication, rather than the mode in which it was obtained.
In addition, the Wiretap Act was framed against the assumption that a person might have one of a few reasons for intercepting a communication without authorization, all of which merit some control under the law: gathering evidence for a criminal investigation, gathering material to embarrass another person, or simply satisfying a curiosity in the affairs of other people. Cybersecurity researchers do not (or should not) pursue these ends when they make use of real-time communications streams. Instead, for the most part, they subject the communications to automated analysis. To be sure, it may sometimes be necessary for researchers themselves to examine the contents of communications to debug software, improve experimental set-ups, or to explain anomalous or unexpected results. Researchers should be frank about this possibility when discussing proposed projects with institutional officials, and they specify which investigators would have access to individual communications and how they would keep the communications confidential.

3.2 Sharing and Publishing Network Traces

A second general problem that cybersecurity researchers face in the realm of communications privacy is that of sharing publishing network traces. The scientific bases for sharing these data are compelling: common datasets can provide meaningful comparisons between competing research approaches; simulated data are inadequate for some uses; and existing datasets may not reflect present-day threats or traffic characteristics [18].
The Stored Communications Act (SCA), introduced above, poses a significant barrier to sharing these data. Some additional detail about this law is warranted at this point.
  • Entities Subject to the SCA. The relevant sections of the SCA do not cover all network providers, but rather providers of electronic communications services "to the public." Commercial e-mail providers and ISPs generally are thought to be covered by the SCA, while private businesses that provide Internet access to their employees for work purposes likely are not covered by the SCA. Universities may fall somewhere in the middle, or even have some networks governed by the SCA and some that are not. For example, if a university operates an open wireless network, records pertaining to that network might well be covered by the SCA. A research network that is available only to students, staff, and faculty, however, might not be a service "to the public"; and hence the SCA might not apply to content and records pertaining to that network. To reiterate, the question of whether an entity provides service to the public is critical; if it does not, the disclosure provisions of the SCA do not apply.

  • Disclosures regulated by the SCA. A service provider subject to the SCA may not disclose content records to another person or entity without consent (or the appropriate court order).
    Moreover, a covered service provider may not disclose non-content records to any "governmental entity" without consent or the appropriate order. The meaning of "governmental entity" is quite broad; it might refer to any government agency and its employees [27], including public universities. The term is not limited to law enforcement or intelligence agencies and officials.

For those entities covered by the SCA, the prohibition against divulging non-content records to governmental entities makes an unrestricted public release of data a risky proposition. Putting a dataset on a public website, for example, would make it possible for anyone to obtain the data. Though a case could be made that this mode of disclosure does not meet the statutory standard of knowingly divulging non-content records to a governmental entity, researchers (and their institutions) are probably will not want to rely on this argument.
As discussed above, the SCA only applies to providers of communications services "to the public." Others may disclose non-content records. For these entities, the question becomes an ethical one that researchers and institutions must confront: should they publish network traces?3
The SCA's history and structure points toward some answers. The baseline of statutory protection for non-content records is quite low. The SCA primarily protects against government intrusions into the privacy of non-content records, as is evident from the prohibition on disclosure to governmental entities, which includes (among many other things) law enforcement agencies that have the power to use such information to surveille or prosecute individuals. Though the threat of government surveillance has not abated, private firms now rival, if not surpass, the government's power to analyze network data at the individual level; and the SCA leaves monitoring and analysis by the private sector essentially unregulated. This legal structure allows commercial datamining, behavioral targeting and other practices that are particularly offensive to some conceptions of individual informational privacy to go forward. It is against this background that sharing non-content network traces should be evaluated in privacy terms; carefully anonymized datasets reveal far less about individuals than organizations learn from the data that they control and use for commercial purposes. (Compare Allman and Paxson's description of anonymized packet traces and NetFlow records in [6] with Solove and Hoofnagle's description of commercial datamining in [22] and Solove's description of government datamining in [21]. Yet public and private investment are heavily tilted toward supporting these invasive forms of analysis.
A more general solution to the barriers to research posed by electronic communications privacy laws would be to create a cybersecurity research exception to them. A full proposal for such an exception is discussed in [8].

4 Running Infected Hosts

This section discusses legal and ethical issues that arise in two situations that involve running hosts that are infected with malicious software. First, it may be necessary to allow attackers to remotely exploit hosts in order to collect malware and observe the behavior of both the attackers and the software [19]. Second, researchers may run malware in testbeds in order to observe the software's behavior in a controlled environment.

4.1 Testbeds

The primary legal concern with running malware in testbeds is liability from accidental exfiltration of malicious traffic beyond the testbed. The exfiltration pathway might be a link from the testbed to the Internet that is provided to allow users to run experiments remotely. The Computer Fraud and Abuse Act (CFAA) would be the most likely legal theory for holding researchers liable [2].
The CFAA prohibits a wide variety of conduct directed against essentially any computer connected to the Internet. It prohibits not only targeted break-ins of specific computers, but also knowingly transmitting a program-such as a worm or virus-that damages another computer connected to the Internet.4 Though this provision would appear to cover code that escapes from a testbed, it is important to note that the CFAA also requires intentional harm to another computer in order to find an offense. A researcher who accidentally allows malicious traffic to escape containment is highly unlikely to possess this intent.
An alternative theory of liability for exfiltrated code is based on tort law, an area of common law, i.e., based on court-created doctrines rather than statutes. One potential tort-based theory is negligence, which is the doctrine that courts apply to compensate injured parties after accidents.5 Another theory is nuisance, which would involve proving that the leak of malicious code caused "an unreasonable interference with a right common to the general public" [12]. A third possibility is tort liability for ultrahazardous activities, which is governed by a standard of strict liability. In contrast to negligence, which requires proof that a defendant failed to take precautions appropriate to prevent harm (discounted by the probability of harm), strict liability does not involve any notion of fault: if strict liability applies to an activity (a big if) and an accident occurs, the person conducting the activity is liable for injuries to others.
These theories remain hypothetical; no cases have been brought against testbed operators or users, perhaps because of a lack of accidents involving testbeds. Still, should this situation change, each theory discussed above would face significant hurdles. The negligence theory, for instance, would require proof that the testbed did not have adequate measures in place to prevent exfiltration. Since testbed designers take pains to keep open a minimum number of channels of communication between the testbed and the Internet, the chances of finding such a breach of duty seem slim [10]. A second weakness, which also applies to the nuisance theory, is that it is an open question whether testbed operators or users owe a duty of care to other Internet users in the first place. It is worth noting that none of these theories have been successfully used to sue software vendors for harm arising from security vulnerabilities in their software [7]. Finally, strict liability applies to activities that are, among other things, uncommon and pose a risk of accidents that due care cannot prevent, such as blasting with dynamite in urban areas [23]. Though running malicious code on a testbed may not be within the experience of most Internet users, one could argue that that is the wrong frame within which to judge commonality: Internet users are constantly exposed to malicious traffic. Thus, releasing malicious traffic might not be considered uncommon. Strict liability for accidental exfiltration of malicious code from a testbed thus seems unlikely.

4.2 Non-Isolated Hosts

Research that makes use of hosts that are allowed to interact with attackers present a few additional legal considerations. One concern that researchers might have is that allowing a computer to become infected with malware that causes the host to join a botnet violates the CFAA or other laws. Allowing the infection (or collecting malware) itself probably is not illegal under the CFAA, as the researcher does not obtain unauthorized access to another computer. Allowing the infected host to communicate with an attacker via IRC or other means is more subtle. The contents of the commands, such as instructions to request data from a third-party victim, may not be illegal. But responding to these commands-by sending a flood of traffic to an innocent third party as part of a distributed denial of service attack, for example-would raise the concern that the research system is participating in an attack. Deciding on the appropriate balance between collecting information and potential liability under the CFAA thus deserves careful, case-by-case analysis.
A second question is whether researchers could be liable for data, such as copyrighted works or child pornography, that attackers place on their hosts. Attackers might even deliberately target researchers with such materials, if they discover the identity of a research host and wish to cause trouble for the researcher.
Consider the copyright question first. The concern for researchers is that merely possessing an unauthorized copy of a work (music, a movie, a book, etc.) could expose them to liability for infringement. This situation could arise for researchers investigating peer-to-peer systems. Under the Copyright Act (Title 17 of the U.S. Code), if a person takes no action to infringe one of the exclusive rights of a copyright holder, then there is no infringement. In this case, if an attacker downloads infringing copies of copyrighted works to a researcher's computer without the researcher's knowledge, then the researcher is probably not liable for copyright infringement. This situation could change, however, if the researcher analyzes the contents of materials that attackers send. In that case, the researcher may become aware that he or she is in possession of infringing copies; and analysis of the copies could constitute infringement of one or more exclusive rights (e.g., the right of reproduction6). Researchers would have a strong argument that such reproduction is a fair use (17 U.S.C. § 107) of the work; but a full analysis of that argument is beyond the scope of this paper. Unless analyzing these materials is important for the underlying research, researchers would be better off deleting such materials or preventing attackers from downloading data in the first place.
Unfortunately, the solutions are not as simple in the case of child pornography. Federal law makes it a crime to knowingly possess any image of child pornography [3]. Thus, if a researcher analyzes the contents of materials downloaded by attackers and finds that child pornography is part of the mix, he or she likely meets the definition of this possession crime. The law does provide a defense if a person possesses fewer than three images, reports such possession to a law enforcement agency, and destroys each image. This defense is narrow, and a researcher who stumbles across child pornography planted by an attacker should immediately contact an attorney. As was the case with copyright infringement, the potential for liability should make researchers think seriously about whether projects require allowing attackers to store data on research machines.

5 Mitigating Attacks

Cybersecurity researchers may also find themselves in a position to disrupt or mitigate attacks. After all, their research may yield detailed knowledge of the workings of malware, botnets, etc. This raises the question of what kinds of mitigations are legally permissible, and which steps are ethical. For the most part, mitigation by researchers raises serious legal and ethical questions and should be avoided. To explore these issues, this section makes use of three specific but hypothetical examples.
Example 1. Suppose that a researcher finds that a botnet command and control server is running software that makes it vulnerable to a remote denial of service attack. Taking this server out of commission might seem worthwhile because it would help to disrupt the botnet, if only temporarily. But to the extent that taking down the server would involve sending code or data resulting in unauthorized access to the server, this action could be a violation of the CFAA. (See footnote 4 above for the pertinent text from the CFAA.) The fact that the server is being used for malicious purposes does not matter to an analysis of the proposed mitigation.
Example 2. As a refinement to this example, suppose that messages of a certain format or length cause the command and control program to crash; a researcher (whose computer was infected with malware that the botmaster controls) considers sending crafted messages to effect a crash. In this case, the researcher is communicating via a channel that the botmaster has selected; the botmaster has arguably consented to receive messages from the computers enslaved in the botnet, giving the researcher a stronger argument that the crafted message is "authorized."
Example 3. A final variation to consider on the legal side of mitigation is introducing bogus data (e.g., fabricated usernames and passwords, or fake credit card numbers) into botnets or other networks controlled by malicious actors. In this case, a researcher would simply place the data on hosts that he or she controls and allow attackers to take the data. This research design has the potential to allow researchers to track the flow of data through malicious networks. Still, even bogus data pose legal issues worth considering. The CFAA prohibits trafficking in passwords with intent to defraud and accessing financial records without authorization (18 U.S.C. §§ 1030(a)(6) and (a)(2), respectively). Even if offering truly fabricated does not meet all elements of these offenses other issues merit consideration. For example, linking the data to an actual brand name, such as a bank or a credit card network, could raise trademark infringement or dilution issues.
There remain ethical considerations for mitigation steps that are legal. Perhaps the most important consideration is whether mitigation fits the role of a cybersecurity researcher. Different researchers will view their roles differently, depending not only on their personal beliefs but also the type of institution for which they work. Whatever these variations may be, a point that seems likely to be constant is that researchers are employed primarily to study threats, rather than to take action against them.
Another ethical consideration is the extent to which mitigation (and other forms of investigation, such as probing networks or running honeynets) might harm the reputation of the researcher's institution. Mitigation may be seen as an action on behalf of the researcher's institution, and the researcher may or may not have this authority. Furthermore, when mitigation would involve action against remote hosts (as was the case with Example 2 above), it raises the possibility of interfering with other efforts to study or disrupt malicious activity, e.g., law enforcement investigations. There may also be a risk of misidentifying the parties responsible for malicious activity; or imperfect or ineffective mitigation might give attackers the opportunity to improve their techniques. For these reasons, researchers should be extremely cautious about taking steps beyond their own networks to mitigate threats. At minimum, they should discuss proposed tactics with IT officers at their institutions and, potentially, with law enforcement officials.

6 Publishing Results

Finally, the topic of publishing results ties together many of the issues discussed so far in this paper. The First Amendment to the U.S. Constitution provides broad protection for publishing cybersecurity-related findings, even potentially damaging disclosures such as zero-day vulnerabilities.7 Unless a disclosure is part of an agreement with another person to commit some other crime (i.e., it is part of a conspiracy), or is likely to succeed in inciting "imminent lawless action" [26], the First Amendment provides some protection. A publication that merely provide knowledge that might help another person commit a crime is protected speech [28].
The broad protections of the First Amendment, however, are subject to a few qualifications. Perhaps the most important is DMCA's prohibition on trafficking in devices (which includes software), the primary purpose of which is to circumvent a technical protection measure on a copyrighted work. Courts have held that publishing circumvention software, and even linking to a site that offers such software, violates the DMCA [24]. But it is unclear what level of detail triggers the DMCA. For example, after a group of researchers that found vulnerabilities in a digital watermarking scheme was threatened under the DMCA before presenting their work at an academic conference, the U.S. Department of Justice wrote in a court filing that the DMCA did not prohibit publication of the paper or the underlying research [16]. Still, the prospect of liability under the DMCA is sufficiently realistic that researchers who plan to publish about vulnerabilities in software or hardware that protects copyrighted works may wish to consult an attorney before doing so.
Publications also have the potential to harm an institution's reputation by revealing network details that the institution would prefer to keep secret. A strictly legal concern that this raises is a potential breach of contract. Suppose, for example, that an institution holds contracts that specify a network configuration or bandwidth guarantee given to transit or peering partners. Providing details necessary to allow others to understand a data collection set-up or an experiment might reveal that an institution is not living up to its contractual commitments. Again, consultation with information officers in an organization could help allay these concerns. Note that the objective of this coordination is neither to alter the information in a publication nor to force the organization to alter its practices; instead, it is to give an organization an opportunity to identify potential conflicts with contract partners and to plan for remediation.
The possibility that a publication will reveal details about an organization's network also raises issues beyond legal liability. Researchers should also consider whether the papers or datasets that they publish could reveal information that could help adversaries attack the researcher's own network (or other friendly networks). Publishing datasets, as discussed in Section 3.2, is likely to pose a greater risk to an organization's network than a paper; so data releases may deserve a more careful vetting by IT officers than papers do.8
The same principles apply to the privacy of users whose network use may be discernible from a dataset. Given recent research demonstrating the difficulty of devising robust anonymization schemes [9,14], researchers should be particularly forthcoming about privacy risks before sharing data.

7 Conclusion

The legal environment inhibits cybersecurity research through outright prohibitions and through uncertainties that make some experiments and data collection and sharing efforts too costly to evaluate. Communications privacy laws have also set strong social expectations that network providers will maintain the confidentiality of their data. Though these expectations often do not match reality, they may nevertheless provide a reason that organizations cite to avoid the expense and legal and reputational risk of granting researchers access to network data. Reforming these laws is on the agenda of both privacy advocates and law enforcement agencies. Researchers could participate in reform efforts (e.g., through scholarly meetings and publications, meeting with policymakers, or testifying before them) to make known how the lack of a research exception affects them.
This paper has also attempted to provide a sense of the interests that the laws relevant to cybersecurity are intended to protect. The hope is that this background will help cybersecurity researchers make decisions about their activities in light of broader ethical considerations. These considerations should include not only the users whose activities may be reflected in network data, but also the reputation of the researcher's own organization and the interests of researchers who have supplied, or would like to supply data. More work is needed to develop the relevant ethical framework.

Acknowledgments

I acknowledge support for this work from TRUST (The Team for Research in Ubiquitous Secure Technology), which receives support from the National Science Foundation (NSF award number CCF-0424422). I also thank Deirdre Mulligan and Vern Paxson for many helpful conversations, and Mark Allman, kc claffy, and anonymous referees for helpful comments on this paper.

References

[1]
18 U.S.C. § 2510-2522.
[2]
18 U.S.C. § 1030.
[3]
18 U.S.C. § 2252A.
[4]
18 U.S.C. § 2701-2711.
[5]
18 U.S.C. § 3121-3127.
[6]
Mark Allman and Vern bPaxson. Issues and etiquette concerning use of shared measurement data. In Proceedings of IMC '07, pages 135-140, October 2007.
[7]
Douglas A. Barnes. Deworming the internet. Texas Law Review, 83:279-329, November 2004.
[8]
Aaron J. Burstein. Toward a culture of cybersecurity research. Harvard Journal of Law and Technology, 22, 2008.
[9]
S.E. Coull, M.P. Collins, C.V. Wright, F. Monrose, and M.K. Reiter. On web browsing privacy in anonymized netflows. In Proceedings of the 16th USENIX Security Symposium, pages 339-352, August 2007.
[10]
Emulab. Knowledge base entry: Is emulab firewalled? http://www.emulab.net/kb-show.php3?xref_tag=SI-FW, August 2005.
[11]
Seymour E. Goodman and Herbert S. Lin, editors. Toward a Safer and More Secure Cyberspace. National Academies Press, 2007.
[12]
Practicing Law Institute. Restatement (Second) of Torts, page § 821B(1). 1977.
[13]
Joseph P. Liu. The DMCA and the Regulation of Scientific Research. Berkeley Technology Law Journal, 18:501, 2003.
[14]
Arvind Narayanan and Vitaly Shmatikov. How to break anonymity of the netflix prize dataset, 2006.
[15]
United States Department of Justice, editor. Searching and Seizing Computers and Obtaining Electronic Evidence in Criminal Investigations. 2002.
[16]
U.S. Department of Justice. Brief of the United States in Support of the Motion Felten v. RIAA (Nov. 8, 2001), CV-01-2669 (GEB) (N.D. Cal.).
[17]
Paul Ohm, Douglas Sicker, and Dirk Grunwald. Legal Issues Surrounding Monitoring (Invited Paper). In Internet Measurement Conference, October 2007.
[18]
Ruoming Pang, Mark Allman, Vern Paxson, and Jason Lee. The devil and packet trace anonymization. Computer Communication Review, January 2006.
[19]
Moheeb Abu Rajab, Jay Zarfoss, Fabian Monrose, and A multifaceted approach to understanding the botnet In Proceedings of the IMC. ACM, October 2006.
[20]
Richard Salgado. Know Your Enemy, chapter Legal Issues, pages 228-252. Addison-Wesley Professional, 2004.
[21]
Daniel J. Solove. Digital dossiers and the dissipation of fourth amendment privacy. Southern California Law Review, pages 1083-1167, 2002.
[22]
Daniel J. Solove and Chris Jay Hoofnagle. A model regime of privacy protection. University of Illinois Law Review, pages 356-403, 2006.
[23]
Indiana Harbor Belt Railroad Co. v. American 916 F.2d 1174. (7th Cir. 1990).
[24]
Universal City Studios Inc. v. Corley. 273 F.3d 429. (2d Cir. 2001).
[25]
United States v. Forrester. 495 F.3d 1041. (9th Cir. 2007).
[26]
Brandeburg v. Ohio. 395 U.S. 444. 1969.
[27]
Organizacion JD Ltda. v. United States Dep't of Justice. 18 F.3d 91. (2d Cir. 1994).
[28]
Euguene Volokh. Crime-facilitating speech. Stanford Law Review, 57:1095-1222, March 2005.

Footnotes:

1 Disclaimers: First, this paper considers U.S. law only. Other nations' laws are part of a more complete picture of cybersecurity research legal issues, but, given the limited space available and the complexities of U.S. law, it is impossible to address international law in a helpful manner here. Second, though the author of this paper is an attorney, nothing in this paper constitutes legal advice. Researchers who believe they are encountering issues similar to those discussed here should discuss their individual circumstances with an attorney.
2 Many states have their own versions of these laws. In particular, many have their own version of the Wiretap Act, and in some states, the law is more strict with respect to consent. In California, for example, both parties to a communication must consent to its interception.
3 For the purposes of this discussion, it is assumed that only non-content (i.e., packet header) traces are in question, and that releasing the contents of communications raises insurmountable privacy issues.
4 Specifically, 18 U.S.C. § 1030(a)(5)(A)(i) prohibits:
[K]nowingly caus[ing] the transmission of a program, information, code, or command, and as a result of such conduct, intentionally caus[ing] damage without authorization, to a protected computer.
A "protected computer," in turn, means any computer owned by a financial institution or the U.S. government, or any computer used in interstate commerce. 18 U.S.C. § 1030(e). The interstate commerce portion of this definition is sufficiently broad to bring any computer connected to the Internet within the definition of "protected computer."
5 A successful negligence suit requires proving that (1) the defendant owed the plaintiff and duty of care; (2) the defendant breached the duty; (3) the breach caused harm; and (4) the harm is a legally recognized form of injury.
6 Courts have held that copies made in RAM may infringe the exclusive right of reproduction, even if no permanent copy is made. See, for example, MAI Systems Corp. v. Peak Computer, Inc., 991 F.2d 511 (9th Cir. 1993).
7 One exception is for classified systems. Another is for systems examined under a non-disclosure agreement (NDA); a researcher might be liable for damages resulting from a breach of contract if he or she publishes results that violate the NDA.
8 These officials are usually extremely busy and have limited resources; con vicing them of the benefit of collecting and sharing data that could harm the organization may require considerable relationship-building effort.


File translated from TEX by TTH, version 3.38.
On 4 Apr 2008, 18:42.

Continue Reading...
21.11.08

Chmod, Umask, Stat, Fileperms, and File Permissions

I began researching permissions in detail. I went deep into the source code of Apache (which is why this site is called AskApache, BTW), PHP, Python, Ocaml, Perl, Ruby, and POSIX operating systems and got a pretty good handle on it now..

read more | digg story

Continue Reading...
18.11.08

ApacheCon US 2009

Call for Papers Opens for ApacheCon US 2009

The Apache Software Foundation (ASF) invites submissions to its official user and developer conference, taking place 2-6 November 2009 at the Oakland Convention Center and Marriott Hotel. ApacheCon serves as a forum for showcasing the ASF’s latest projects, members, and community initiatives. Offering unparalleled educational opportunities, ApacheCon’s presentations, hands-on trainings, and sessions address key technology, development, business/community, and licensing issues in Open Source.

The wide range of activities offered at ApacheCon promotes the exchange of ideas amongst ASF Members, committers, innovators, developers, vendors, and users interested in the future of Open Source technology. The conference program includes peer-reviewed sessions, trainings/workshops, and select invited keynote presentations and speakers.

Conference Themes and Topics

Building on ten years of success, ApacheCon returns to the Bay Area for the 10th anniversary of the Apache Software Foundation. Comprising some of the most active and recognized developers in the Open Source community, ApacheCon provides an influential platform for dialogue between Open Source developers and users, traversing a wide range of ideas, expertise, and personalities.

ApacheCon welcomes submissions across many fields, geographic locations, and areas of development. The breadth of the Apache community lends itself to conference content that is somewhat loosely-structured, with common themes of interest addressing groundbreaking technologies and emerging trends, best practices (from development to deployment), case studies and lessons learned (tips, tools, and tricks). In addition, ApacheCon will continue to offer its highly popular, two-day intensive trainings; certifications of completion will be distributed to those who fulfill all the training requirements.

Topics appropriate for submission are manifold, and may include but are not restricted to: Apache HTTP server (installation, configuration, migration, and more); ASF-wide projects (including Lucene, Hadoop, Jackrabbit, and Maven); Scripting languages and dynamic content (such as Java, Perl, Python, Ruby, XSL, and PHP); Security and e-commerce (performance tuning, load balancing and high availability); New technologies (including broader initiatives such as Web Services and Web 2.0); ASF-Incubated projects (such as Sling, UIMA, and Shindig); and Business/Community issues (Open-Source-driven business models, open development, enterprise-wide adoption, and more).

Submission Guidelines

Submissions must include:

  • Session title
  • Speaker name
  • Speaker biography
  • Session description
  • Format and duration
  • Audience expertise level

Full details are available online on the CFP page at http://us.apachecon.com/c/acus2009/cfp/

Types of Presentations:

  • Trainings/Workshops
  • General Sessions
  • Case Studies/Industry Profiles
  • Corporate Showcases & Demonstrations
  • Fast Feather (short) sessions
  • Birds of a Feather discussions
  • Invited Keynotes/Panels/Speakers

Pre-Conference Trainings/Workshops

Held on the first two days of the conference (2-3 November 2009), ApacheCon trainings are available at a registration fee beyond the regular conference fee. Proposals may be submitted for half-day (3 hours), full-day (6 hours), or two-day (12 hours) training sessions. These proposed tutorials should be aimed at providing in-depth, hands-on development experience or related continuing education. Training submissions are welcome at beginner, intermediate, and expert levels.

General Sessions include presentations on practical development applications, insight into high-interest projects, best practices and key advances, overcoming implementation challenges, and industry innovations. Especially welcome are submissions that extend participants’ understanding the role of ASF projects and their influence on the Open Source community at large. General Sessions are scheduled for 50 minutes and are accessible to all conference delegates.

Case Study/Industry Profile

Practitioners are invited to submit presentations that focus on how implementing particular ASF technologies led to improved products/solutions, service offerings, changes in work practices, among other successes. Proposals that highlight overcoming interesting challenges in application design and developing innovative frameworks using multiple ASF projects are particularly encouraged. NOTE: Marketing-oriented submissions aimed at promoting specific organizations or products will not be accepted.

Invited Keynotes/Panels/Speakers

Each conference the ApacheCon Planning team invites select presenters dealing with engaging, dialectical, and challenging subjects to present in keynote and/or panel formats. Topics include cutting-edge technology development, industry leadership, hot or emerging trends, opinions on controversial issues, insight on technology paradigms, and contrasting viewpoints in complementary professional areas. Those interested in suggesting a candidate for an invited speaker opportunity should submit a brief proposal with the speaker’s name, affiliation, background/bio, overview of topics of interest, and contact information.

Birds of a Feather (BoF) sessions and Fast Feather Track talks are selected by separate processes, nearer to the beginning of the conference.

Proposals are now being accepted at http://us.apachecon.com/c/acus2009/cfp/ and can be revised at anytime until the submissions closing deadline of 28 February 2009.

In addition, sponsorship opportunities for both ApacheCon EU 2009/Amsterdam and ApacheCon US 2009/Oakland are available. Please contact Delia Frees at delia@apachecon.com for further information.

ApacheCon US 2009 is co-produced by the Apache Software Foundation and Stone Circle Productions. The ApacheCon Planning team comprises ASF Members from all over the world working on a wholly-volunteer basis. For more information, visit http://us.apachecon.com/c/acus2009/

Continue Reading...
17.11.08

A Side Note On WordPress, SEO, sitemap.xml and robots.txt

A short and simple look at using a robots.txt file for SEO WordPress blogs.

read more | digg story

Continue Reading...

Tips and Tricks to increase site speed with .htaccess

One such file is .htaccess. This file can be used to improve your site’s loading time greatly, if mod_expires and mod_headers are compiled with Apache. Apart from this, there is one more simple method; gzip compression (using htaccess). Both are described in this article.

read more | digg story

Continue Reading...

AskApache SEO part 2: Move urls higher in Search Results

Part II of the Advanced SEO Series shows how to control which urls are indexed in Search Engines and moving higher up in Search Results

read more | digg story

Continue Reading...

3+ ways to speed up sites that use Google Analytics

Hosting ga.js locally, combining with other javascript files, setting the cookie's domain correctly, replacing the init javascript code.

read more | digg story

Continue Reading...

.htaccess trick shows Development CSS file only to Developer

I wanted to make changes to the .css file that only I could see, so that my regular traffic and site-visitors would still see the old version. Here’s the elegant solution I came up with using .htaccess and mod_rewrite

read more | digg story

Continue Reading...

Website Security for WordPress and Drupal

Short, sweet, and solid .htaccess security info.

read more | digg story

Continue Reading...
27.10.08

A WebServer built with 100 lines of BASH

Piotr Gabryjeluk: 100 lines of BASH script that simply rock!: "Screenshot Tour


#!/bin/bash

function debug {
local severity="$1"
shift
local message="$@"

echo -n "`date -u`" 1>&2
echo -ne '\t' 1>&2
echo -n "$severity" 1>&2
echo -ne '\t' 1>&2
echo "$message" 1>&2
}

function fix_path {
echo -n "$1" | head -n 1 | sed 's|^[/.-]*||' | sed 's|/\.*|/|g'
}

function serve_dir {
local dir="`fix_path "$1"`"
if [ "$dir" = "" ]; then
dir="./"
fi
echo 'HTTP/1.1 200 OK'
echo 'Content-type: text/html;charset=UTF-8'
echo
echo LISTING "$dir"
echo '
'
ls -p "$dir" | sed -e 's|^\(.*\)$|\1
|'
}

function serve_file {
echo 'HTTP/1.1 200 OK'
echo 'Content-type: application/x-download-this'
echo
local file="`fix_path "$1"`"
debug INFO serving file "$file"
cat "$file"
}

function process {
local url="`gawk '{print $2}' | head -n 1`"
case "$url" in
*/)
debug INFO Processing "$url" as dir
serve_dir "$url"
break
;;
*)
debug INFO Processing "$url" as file
serve_file "$url"
;;
esac
}

function serve {
local port="$1"
local sin="$2"
local sout="$3"

while debug INFO Running nc; do

nc -l -p "$port" < "$sin" > "$sout" &
pid="$!"

debug INFO Server PID: "$pid"

trap cleanup SIGINT
head -n 1 "$sout" | process > "$sin"
trap - SIGINT

debug INFO Killing nc

kill "$pid"
done

debug INFO Quiting server
}

function cleanup {
debug INFO Caught signal, quitting...
rm -Rf "$tmp_dir"
exit
}

tmp_dir="`mktemp -d -t http_server.XXXXXXXXXX`"
sin="$tmp_dir"/in
sout="$tmp_dir"/out
pid=0
port="$1"

mkfifo "$sin"
mkfifo "$sout"

debug INFO Starting server on port "$port"
serve "$port" "$sin" "$sout"
cleanup

Continue Reading...
26.10.08

The Linux and Unix Menagerie: Using Mkfifo For Monitoring And Enhanced User Activity Logging

Continue Reading...
25.10.08

NGinx Web Server Cookbook

Continue Reading...
20.10.08

.htaccess trick shows Development CSS file only to Developer

.htaccess trick shows Development CSS file only to Developer: ".htaccess trick to show Alternate CSS file based on IPThis past week I was making changes to my sites apache.css file for a site-redesign. I wanted to make changes to the .css file that only I could see, so that my regular traffic and site-visitors would still see the old version. I quickly came up with an elegant solution using the incredibly powerful .htaccess and mod_rewrite that worked so well I wanted to share it with all you great and interesting people :)"

Continue Reading...
11.10.08

Simple Wordpress Security Tips

Simple ways to protect your blog from malicious activity.

read more | digg story

Continue Reading...

Rare and Obscure Penetration Testing Tools

List of mainly obscure security software geared more for the master pentester. These are mostly for unix, bsd, and mac and many are difficult to install and setup (require custom servers, inside access points, obscure libraries). Only programs that output data are included, so no actual exploits or anything. Most of these output extremely useful al

read more | digg story

Continue Reading...

Simple Wordpress Security Tips

Simple ways to protect your blog from malicious activity.

read more | digg story

Continue Reading...
10.10.08

Wikipedia adopts Ubuntu for its server infrastructure

The Wikimedia Foundation, the organization behind the hugely successful Wikipedia project, is migrating all of its server infrastructure to the Ubuntu Linux distribution. This move reflects the growing viability of Ubuntu for enterprise-scale server deployments.

read more | digg story

Continue Reading...

How Much Do Top Bloggers & Social Media Consultants Get Paid

The media world is changing and its jobs are changing too. The rise of the blogger is an often-told story, but are the lucky few bloggers who do ...

read more | digg story

Continue Reading...
2.10.08

Eight Online Places to Learn something New!

If there is one thing I strongly believe is tapping the power of the Internet to learn. It is with always with great happiness that everything I have learnt in the past ten years (since I got online) has been only through tutorial sites.Here are a list of some of that where you can quickly and easily find tutorials, articles and information.

read more | digg story

Continue Reading...
30.9.08

Mod_Rewrite Variables Advanced Cheatsheet

List of All Variables used by RewriteCond and the actual variables Value for easier rewriting

read more | digg story

Continue Reading...
23.9.08

Huge Compilation of WordPress Code

If you are a theme designer, or just enjoy customizing your existing WordPress theme, it can sometimes be a hassle digging around for the WordPress code you need. I’ve spent a lot of time on this site collecting various snippets of code since launch and decided that it would probably be more convenient and useful to people if I was to consolidate..

read more | digg story

Continue Reading...
20.9.08

AskApache WordPress Hardening Plugin

Uses .htaccess and mod_rewrite security with the help of blogsecurity for a good solid setup.

read more | digg story

Continue Reading...

Optimize a Website for Speed, Security, and Easy Management

Discover how to setup and manage a website from top to bottom for optimized speed, security, and simplicity.

read more | digg story

Continue Reading...
19.9.08

Encrypted WordPress Site Backups

ecause backups contain all your sensitive information, its smart to encrypt any sql backups.. and while we’re at it, also encrypt any site backups.

read more | digg story

Continue Reading...

SetEnvIf and SetEnvIfNoCase Examples

Some nice SetEnvIf and SetEnvIfNoCase Examples for conditionally setting variables in Apache .htaccess

read more | digg story

Continue Reading...
18.9.08

CSS Message Box collection

A collection of some simple CSS styles you can apply to your message boxes (clean, solid, iconized, alternated rounded borders, tooltip).

read more | digg story

Continue Reading...

How to make sexy buttons with CSS

This tutorial will teach you how to create pretty looking textual buttons (with alternate pressed state) using CSS. Dynamic buttons save you heaps of time otherwise spent creating graphics and will basically make you a happier person at the end of the day.

read more | digg story

Continue Reading...
17.9.08

How to make sexy buttons with CSS

This tutorial will teach you how to create pretty looking textual buttons (with alternate pressed state) using CSS. Dynamic buttons save you heaps of time otherwise spent creating graphics and will basically make you a happier person at the end of the day.

read more | digg story

Continue Reading...

jQuery and JavaScript Coding: Examples and Best Practices

When used correctly, jQuery can help you make your website more interactive, interesting and exciting. This article will share some best practices and examples for using the popular Javascript framework.

read more | digg story

Continue Reading...

jQuery and JavaScript Coding: Examples and Best Practices | How-To | Smashing Magazine

jQuery and JavaScript Coding: Examples and Best Practices | How-To | Smashing Magazine: "Unobtrusive DOM Scripting

While the term “DOM scripting” really just refers to the use of scripts (in this case, Javascripts) to access the Document Object Model, it has widely become accepted as a way of describing what should really be called “unobtrusive DOM scripting”—basically, the art of adding Javascript to your page in such a way that if there were NO Javascript, the page would still work (or at least degrade gracefully). In the website world, our DOM scripting is done using Javascript."

Continue Reading...

Welcome to the World Wide Web Foundation

Dear Friends of the Web ...

Tonight, 14 September 2008, I joined Tim Berners-Lee in Washington, DC, USA at the incredible Newseum for his announcement of the formation of the new World Wide Web Foundation. Tim's speech is online, as well as video and photos and a press release.

Many thanks to everyone who has helped get us to this first step:

  • Alberto Ibargüen and the Knight Foundation for their very generous seed grant.
  • The World Wide Web Consortium (W3C) and Web Science Research Initiative, and the joint task force behind this project: Tim, Stéphane Boyera, Daniel Dardailler, Craig Heintzman, Rosemary Leith, Mauro Nunez and Thomas Roessler.
  • Ian Jacobs, Karl Dubost, Ted Guild and many others from the W3C systems and communications teams for building this Web site.

The promise of the Foundation is to accelerate the Web's advancement and growth around the planet. It is pretty exciting to be a part of it. We are still in the planning phase, and I expect to use this blog to share more information as we progress towards a full launch in early 2009. All those interested in becoming founding donors for this initiative are welcome to contact me at donations@webfoundation.org.

Beyond financial contributions, what about contributions of intellectual capital? It would be great to hear your ideas on how the community that is developing the Web used now by about 1/5th of the inhabitants of the planet could contribute their time and skills to bring the benefits of the Web to the other 4/5ths.

Have a look around the new site. If you have any questions or ideas, send me email at contact@webfoundation.org.

Continue Reading...

How to uninstall the Adobe Flash Player plug-in and ActiveX control

How to uninstall the Adobe Flash Player plug-in and ActiveX control

Continue Reading...

The World’s Easiest Way to Resize Flash Movies

Free actionscript, awesome online examples!

read more | digg story

Continue Reading...

Wordpress Security Tips and Hacks

10 simple tips to protect your WordPress blog from hacking.

read more | digg story

Continue Reading...

Prevent WordPress from getting hacked... twice

These are all really accurate tips, not just a thrown together list.

read more | digg story

Continue Reading...
14.9.08

Refresh vs. Ajax vs. More


A simple question at the bottom of each review asks the reader if they've found the review to be helpful. Those that feel inclined to respond can choose between two buttons, simply labeled Yes and No. While Amazon has sold millions of copies of this book since 2002, very few have shared their opinion of Ms. Tarrani's review. However, the few that did have provided a valuable service to future Harry Potter shoppers.

The interesting part of the helpful buttons is they don't refresh the page. Instead, upon pressing the button, a message appears, first informing the reader their feedback was being saved, then thanking them for their vote.

The Amazon team uses Ajax to complete this action. When the button is pressed, a message is sent to the Amazon server, who then confirms its receipt. Once the javascript function receives the confirmation, it displays the thank you note. All this happens in mere seconds, assuming the connection is solid. With practically no interruption, the user is now ready to go on to their next activity.

There are other ways Amazon could've implemented this same functionality. They could have, for example, stayed with the traditional button behavior, building the question into an HTML form tag. Pressing the button would do practically the same thing as the current Ajax behavior, except a new page would be returned.

From an implementation standpoint, the communication with the server is almost identical with this method. From the user's standpoint, however, it would be dramatically different. The user couldn't continue interacting with the page, until the new page was loaded. Returning the user to the same point in the page would be difficult, creating a jarring effect. (Anchor tags could get the browser to the same general neighborhood, but the page would likely shift from its original configuration.)

The designers at Amazon wanted to make the action subtle. Another option would've been to use radio buttons for each review. Clicking the radio button to indicate Yes or No wouldn't invoke a page refresh. However, to register the vote, users would have to remember to press a submit button. It's likely that users might forget to do this, thereby neglecting to get their votes registered, and defeating the purpose of the function.

For Amazon, Ajax is the right way to implement this functionality. However, deciding when to use Ajax to eliminate a page refresh is not always easy.

At Netflix, Ajax Pushes to the Top (Sometimes)

The designers for Netflix.com are big fans of using Ajax to eliminate page refreshes, having been a pioneer with the technique from the early days. (They were one of the first, using it to register how many stars their subscribers rated each movie.)

Interestingly, they don't use it for everything. One place where this jumps out is in the movie queue. Subscribers add DVDs they'd like to watch to the queue and use it to manage the order they'll receive the discs.

The queue functionality offers three ways to change the order of the list. In the early versions, subscribers entered a number into a type-in field next to the movie and pressed an update button. Putting a '2' in the third movie would move it to the second position on the list.

Because the most common subscriber action was to choose the next movie to watch, the team added a "TOP" button to move the disc to the top of the list. In the most recent version, users can also drag the movie into the new position.

It's interesting that the original number-and-button operation still results in a page refresh, while the new operations don't. Similarly, on the same page, rating a movie doesn't have a refresh, while deleting a movie from the list does.

This isn't by accident -- the designers have made these choices deliberately.

Comparing Orbitz and Kayak: Sorting Flights

Here's an experiment you can try at home: Open up two browser windows (or tabs). In one, bring up the travel reservation site, Orbitz.com, and in the other, bring up it's competitor, Kayak.com. Ask for the same reservation in each, say a 4-day trip from Boston (BOS) to Las Vegas (LAS) sometime in November. (Putting it a couple of months out will give you the most flight options.)

Both sites lets subscribers sort the resulting flight options by several criteria, such as price, departure time, and duration. This is what we'll compare. Measure how long it takes to re-order the list when you switch to a different criteria.

When I do it, it takes Orbitz 6 to 7 seconds, on average, to make the switch, while Kayak is usually less than 2. Orbitz involves a page refresh, while Kayak reorganizes the data without the refresh. (Interestingly, Orbitz only loaded the page with data for 45 flights, whereas Kayak loaded the data for all 532 flights in my trip. The initial load for Kayak is a little longer, moving all that data, but not substantially so.)

How Much Does 2 Seconds Matter?

When we've watched users booking reservations, we've noticed users are far more likely to explore the sorting options on Kayak than on Orbitz. We think Orbitz's design limits the interaction experience for users because of the page refresh.

Can the refresh be too fast? Absolutely. Kayak, interestingly, has to put up a big interstitial box that says "Sorting Results..." to ensure users notice. In earlier designs, when they didn't display the box, users would often miss the re-ordering, thinking that nothing happened.

When to Eliminate the Refresh

If the result of the action will bring the user back to the same page, then it's a good time to investigate eliminating the refresh. For example, instead of re-displaying the same account creation page after the user entered a password that isn't good enough, using a javascript function to give feedback on the password immediately after entry can make for a nicer experience.

In most browsers, a refresh freezes the current page, waits for the new data, erases the old page, redraws the new page from the top, and, if specified, jumps to the anchor. The freezing and flashing result can be a jarring experience for the user. When the user is expecting a different page, they don't seem to pay much attention to it. So, for most clicks, a new page will be what people expect.

However, as in the case of Amazon, Netflix, and Kayak, sometimes you want to go for a more subtle effect. Instead of the flash and bounce from a refresh, a simple changing of the data works better, encouraging the user to interact even more.

There are downsides, of course. Javascript and Ajax isn't easy for everyone to work with. It has browser incompatibilities, so you have to be up-to-date on the latest hacks. Memory management in Javascript can get messy, causing performance problems as more data is loaded into the browser. (Google's new Chrome browser is optimized to deal with this, since Google loves to use Ajax in its applications.)



Read Full Story

Continue Reading...
13.9.08

.htaccess Tutorials

.htaccess Tutorials: ".htaccess tutorial

.htaccess file provide a way to make config changes on a per-directory.

* Archives .htaccess
* authentication and/or authorization in .htaccess
* Example of SSI
* CGI sample code
* What they are/How to use them
* Not using .htaccess files
* As the directives are applied
* Solving Problems"

Continue Reading...

JavaScript Obfuscator

JavaScript Obfuscator: "The features summary of JavaScript Obfuscator
Click on the small arrow below each item to expand details.
Unique! It can compress names of local variables (like YUI Compressor does) while obfuscating (or keeping the same) names of all other symbols; names of local variables can also be mangled after compressing them to get more cryptic code
show details
JavaScript Obfuscator has special modes that assign local variable names a shortest name possible (considering the scope of variable) like YUI Compressor does. In fact, a modified and optimized version of YUI compressor is used for such modes - thus it's very reliable and well-tested.

After local variables are assigned shortest names possible, these name assignments can be kept (while mangling all other symbols using other mangler - e.g. md5) resulting in very short output. Alternatively, the assigned names can be also mangled after that, like all other symbols - this resulting in different resulant name being assigned to variable of the same name in different scopes.

An interesting special case is when mangler 'none' (that does not alter symbol names) is used for all other symbols - all public API of your scripts is preserved (so you don't have to compose lists of exceptions and test your code extensively), while name of local variables get shortest meaningless names. The output will have much smaller size compared to size of input"

I recommend using an obfuscator like this one after using Dojo to compress it.

Continue Reading...
12.9.08

Free Software, Power to The People - Book

Salon: fsp outline:

Complete book outline

Warning to readers: This outline is subject to change at any time. In fact, the outline you are currently reading is not the original outline posted at the launch of the Free Software Project. After the first month, I became frustrated with the delays inherent in waiting until I had complete, 10 to 15,000 word-long chapters before posting them. So I have now broken down the original chapter divisions into shorter chunks. I'm hoping that this will accelerate the process of writing and uploading each section.

Ideally, this will also increase flexibility. The story of free software is ongoing, and as events warrant I would like to incorporate coverage of them into the main narrative. So if for example, a Linux company goes bankrupt, it might then be appropriate to cover that in the context of a section on the perils of going public as a free software enterprise. Or, as is the case with the current (April 20th, 2000) installment, if circumstances allow me to travel to Finland I can then write about the experience, even though Finland wasn't originally scheduled to be covered until Chapter 6, as part of the introduction to Linux and Linus Torvalds.

It is most unlikely that this will be the last change in plans. The order of the chapters may be changed, new chapters may be added, sections may be moved from one chapter to another. I'm also always interested in suggestions as to what should be covered that isn't mentioned here. I consider this outline a plan of action, but I doubt that it will map perfectly to the final product.

If you're curious you can still look at the old outline.
--Andrew Leonard

Chapter 1: Boot time

This introductory chapter examines some of the potential starting points for the story of free software, ranging as far back as the 11th century and as recently as the summer of 1999. The main goal of this chapter is to give readers a sense of just how broad and far-reaching the implications of free software are. The global economy, free speech and censorship, intellectual property, the rise and fall of monopoly power, the history of the Net -- these are just some of the issues that will be explored in future chapters. This chapter is meant to be comprehensible to people who aren't experts in software or computer technology; later chapters will delve deeper. (This section of the outline is unchanged from the original version).

Chapter 2: Free speech and free software

Part I:

What do free speech and free software have in common? Much has been made by computer historians of the intersection between the counterculture of the Bay Area and the early history of the personal computer. One story that hasn't been told very often is the role the computer science department at Berkeley played in the growth of the Internet, the spread of Unix and the eventual blossoming of free software.

Not everyone at UC Berkeley was a Free Speech Movement veteran or anti-Vietnam War protester, of course. Prodigal programmer Bill Joy didn't pay too much attention to politics in the mid-'70s -- he was too busy rewriting AT&T Unix from top to bottom, and redistributing his changes as the Berkeley Software Distribution, or BSD. BSD became very popular with academics and Internet geeks all over the world, and once Joy's team added networking capabilities to it, BSD evolved into the lingua franca of the Internet.

I will argue that the contribution Berkeley made to networking, Unix and the Net can be seen as just as important as the contribution Berkeley made to radical politics in the 1970s. And indeed, for some of the Berkeley researchers, getting the Net to the people was the biggest contribution to the idea of free speech that they could make.

Part II:

Bill Joy and the other BSD hackers were working in the context of Unix. Linux, too, is in the Unix family tree. Is there something different about Unix that encourages cooperation? Or is there something different about Unix that attracts idiosyncratic independent minded cusses? I'd answer both questions in affirmative. In a technical sense, Unix is all about networking, that's why it has flourished on the Net and has helped the Net flourish. But there's also a culture to Unix that sets it and its related languages and programs apart. Unix is different from Windows in profound cultural ways, just as the MacOS is different from Windows, in quite different, but equally profound ways.

What does it mean to say that Unix has a culture. Part II of Chapter 1 will be The Free Software Project's first stab at exploring the culture inherent in various strains of code. Perl, for example, attracts a certain type of hacker -- I'd like to know why and how? How much credit can we give to Unix's original creators? And how does Unix differ from the culture of Linux?

Chapter 3: The saint of free software: Richard Stallman goes it alone.

More than any other single person, Richard Stallman is responsible for incubating both the idea and the reality of free software. He has been profiled countless times, including once by myself, so I'd like to approach the chapter on him from two directions.

Part I: Richard Stallman -- virus or prophet?

Even as the Internet was gaining momentum and the Berkeley researchers were pumping out new versions of Unix, back on the East Coast the "hacker ethic" was under concerted assault. Although MIT is widely credited as the birthplace of hacker culture, by the early 1980s it was beginning to look more like a graveyard. No one felt the chill more than Richard Stallman, who watched in dismay as one colleague after another left the ivory tower to work in the private sector. No longer was he allowed to share the benefits of their work; no longer was software considered the property of all. Now, everything was proprietary.

Today, the Free Software Foundation that Stallman founded in 1984 is credited as the single most important force in resisting the advance of proprietary-only software. During hacking's darkest hour, Stallman kept the light of free software freedom aflame, persevering bullheadedly against all odds in his project to write free software that everyone could use. Without the tools that he created, the development of Linux and countless other free software programs would have been extraordinarily difficult.

Stallman has an opinion on everything, and the current high profile of free software has given him a bigger pulpit from which to declaim from than ever before. Patents, the Microsoft trial, free manuals, copyright, in this section I'll give a comprehensive a look at both the person and the ideas. But I'll do it from a specific angle -- is Richard Stallman a human virus. His GPL license has been criticized as an anti-capitalist virus. What about the person himself. What kind of effect is he having?

Part II: Becoming the virus

Both parts of Chapter 3 will be written using only free software. This will require some learning on my part, and probably won't be as comfortable for me as if I used a proprietary editor. But for Stallman, comfort isn't the issue. Morality is. Some people just feel better using free software. The psychology of the users of free software is as important as the technical construction of that software.

Why do programmers love free software? Why does Linux command such ferocious fandom? The reasons go beyond just the rewards of creating or working with efficient, bug-free software and don't necessarily dovetail with political or moral motivations.

Writer Ellen Ullman calls it the "close to the machine" factor. With free software, you can get your hands dirty, you can fix problems as they arise, and you have the sense that your computer's innards are accessible to you. While this isn't always attractive to everyone -- most average computer users don't really want to muck around with a computer's insides -- it does have a potent appeal to some people who don't consider themselves programmers.

With free software, everyone can become a programmer -- or at the very least a member of a greater programming community. As one learns how to configure a free software program on one's own computer, one naturally turns to the community for help and hints, and in the process of learning, becomes a member of that community who can help others.

There is a psychological attraction to free software. There is a poetry to code, an exhilaration that comes from successful programming, no matter how trivial. Free software programming allows the purest kind of programming satisfaction -- to an almost spiritual degree. This chapter will examine the psychological motivations fueling free software excitement, and will also give the author a chance to detail his own personal journey into the world of free software. Part II will be a plunge into that psychology from a user's perspective.

Chapter 4: The Internet and Free Software

Part I: Duct tape for the Net: A Perl beyond price

The Internet's growth from a government project that linked university research centers together into one of the most important organisms of society at the close of the 20th century has been told many times. What hasn't been previously recounted, however, is the role that free software hackers played in the Internet's evolution. Chapter IV will show how the Internet and the free software movement are linked together in a positively reinforcing feedback loop: The hackers improve the Net, and the Net enhances the quality of hacker productivity.

One entry point for telling this part of the story is Larry Wall, the creator of the programming language Perl. There would be no Yahoo without Larry Wall -- and no Amazon either, not to mention a million other Web sites. Perl is to the World Wide Web as mortar is to a building made out of bricks. It is the glue language, the thing that stitches everything together. It has made possible a whole new generation of Web-based businesses.

That alone would be enough reason to pay attention to Wall. But that was hardly his first major achievement. In the early 80s, Wall also wrote a little program called "patch." It didn't do much, and wasn't very complicated. Its main purpose was to allow programmers to upgrade their versions of much larger programs without having to get a whole brand new copy of the program delivered over the Net -- an ordeal that could cost time and money back in the old, low-bandwidth days of the Net. Patch turned out to have huge consequences for the Internet. With patch, programmers could make their own changes to programs and distribute them quickly and efficiently across the Net. Patch made possible the style of collaborative software development that later resulted in the success stories of Linux, Apache, Perl and the rest of the free software pantheon.

Part II: The Web and Free Software

The second section of Chapter 4 will focus on how free software tools have made the new era of Web-based businesses possible. But it will also begin to take a more critical look at some aspects of free software culture. For example, there's the problem of the "benevolent dictatorship" model that most free software projects operate under. Despite the "organized anarchy" that prevails in Net-based free software projects, the most successful usually have one central charismatic leader who makes ultimate decisions. The "community" must support those decisions for them to be effective, but without a strong leader, free software projects often founder. What does this say about the scalability of free software business models -- or their long-term stability?

Chapter 5: Guns, free software and libertarians

Part I: Eric Raymond

Chronologically, chapter 5 takes the story of free software from Stallman's lonely isolation to the mass movement that is dominating press headlines in the late '90s. Eric Raymond, the self-described "technopagan libertarian" and leading spokesman for free software, is the central focus of the chapter. Raymond, the author of several books and numerous influential articles, is also the premier anthropologist and folk historian of hacker culture. Chapter 5 will continue the exploration of the hacker psyche, with particular emphasis on the libertarian component.

Part II: The politics of software

A consideration of libertarianism is essential to the discussion of free software. Libertarian culture has always thrived on the Net, and the economic model of free software -- which emphasizes grassroots independence -- is psychologically attractive to libertarians. But the "free software movement" is often accused of being a thinly disguised left-wing attack on business. And indeed, a significant number of the software developers who work on free software projects live outside of the United States and are motivated by suspicion and distrust of American-style capitalism.

Chapter 6: The rise of the penguin: Linux and the plot for world domination

Part I: The Lore-masters of Finland.

The story of Linux starts in Finland, where an undergraduate at the University of Helsinki first started fooling around with ideas for his own operating system. I will be visiting Finland at the end of March, so this chapter will start there as well. Finland is enormously technologically advanced for a country its size, and Finnish programmers have played a role in the Internet's development that long predates the rise of Linux. Part II: Linus Torvalds and the creation of Linux.

How did it happen? Who is Linus Torvalds? What does he think? How is he different from the other free software hackers. The second section will trace the rise of Linux to its current incarnation as one of the most exciting stories in the computing world today. How did this happen? Linux is the biggest story in free software, the linchpin of the entire movement. In chronological terms, Linux completes the journey that began at Bell Labs.

Chapter 7: The rise, (and fall?) of the New Linux Economy

Part I: IPO madness!

1999 was the year the stock market went crazy of Linux.

Part II: IPO despair!

2000 was the year the stock market suddenly hated Linux.

These two sections, together, will try to untangle the stormy ups and downs of the market's infatuation and then, subsequently, disgust for Linux. What can we learn about how the stock market, Silicon Valley, Wall Street and the technology industry are feeding off each other from the experience of Linux? Is it even possible that Linux can be commercialized. What are the venture capitalists thinking?

Even long-time advocates of free software were stunned by the events of 1999. Suddenly, as viewed by the investment community, venture capitalists and day-traders, Linux achieved the same buzzword status as earlier concepts like "push" and portals. Companies like Red Hat and VA Linux had huge initial public offerings, giving them stock valuations high enough to purchase other companies, hire scores of programmers, and begin to subsidize the creation of even more free software on a hitherto unprecedented scale.

Is this just another example of dot-com hype gone mad? Is Wall Street being hornswoggled? Or is something deeper happening -- is the free market recognizing the lasting value of free software? Chapter 11 will examine the intersection of the so-called New Economy with the economy of free software, and explore the problems that may arise when the desires of shareholders in publicly traded companies clash with the fiercely held community values of free software hackers.

Chapter 8: Death to Microsoft

Part I: Microsoft vs. The Gift Economy

The central conflict in the free software saga can be summed up as a showdown between the status quo of Silicon Valley-style capitalism and the new information economy of the Net.

Free software developers operate in a kind of "gift economy." This, of course, is not how Microsoft -- or most other software or computer hardware producing corporations -- plays the game. Instead, it seeks to guard its intellectual property, or, if a competitor appears on the scene, purchase it. Patent applications, non-disclosure agreements, license agreements: the structure of techno-capitalism is built on the control of information.

The success of the free software movement offers hope that there may be new strategies possible for propelling a productive economy -- strategies that don't depend on enforcing artificial limitations on how people are allowed to cooperate or share information. It's possible that this new model may only work in the realm of software, but there may also be applications in other arenas of social endeavor -- one of the sub-themes of this book will be to look for those other arenas.

Will free software topple Microsoft? What does Bill Gates really think about Linux? How will Microsoft attempt to co-opt the movement? Gates has successfully reengineered Microsoft at least once, turning the company around on a dime to "embrace and extend" the Internet. Can he do the same with free software?

A consideration of Microsoft will lead to the wider question of what free software will mean for the entire software industry. In a growing number of cases, free software programs are qualitatively better than their proprietary commercial alternatives -- faster and smarter as well as, obviously, cheaper. Linux has a surging reputation for stability and reliability that many advocates swear puts Microsoft to shame. Apache, a Web server program that operates Web sites, is by far the most popular product of its kind. Through the release of their source code to the general public, free software programs benefit from unparalleled "peer review" -- from having thousands upon thousands of programmers hammer on the code, fix bugs and test it under every possible condition. Software today is becoming unthinkably huge and complex -- Windows NT, Microsoft's industrial-strength operating system, is reputed to consist of a whopping 35 million lines of code. In this era, the distributed resources of the entire Internet constitute the only environment large enough to adequately test all the possible mishaps that might befall so complex a computer program.

Part II: Free software, monopolies, and government action.

The pragmatic benefits offered by free software constitute the biggest threat to Microsoft. How will Bill Gates and co. adapt?

Finally, this chapter will also attempt to place free software in the context of government-business interaction. Since one of the starting points of free software was government restrictions placed on AT&T, and one of the current focal points of free software is Microsoft, it will be useful, in this politically-minded chapter, to consider how monopoly power and government interaction can intersect with and affect the world of software.

(N.B.: As of April, the last three chapters do not yet lend themselves to modularization. But that could well change!)

Chapter 9: Free to be, you and me

MP3. DVD. Copyrights, patents, and software piracy: No issue in the current world of software is more divisive, more hotly contested, and more unsettled than the question of ownership of code -- not just in terms of software, but in terms of entertainment and media. It's not an accident that some of the most vocal fans of free software are also busy trading MP3s or reverse engineering encryption protections for DVD players. Music and moves are software, today, and the Internet is, at the very least, the most effective distribution vehicle for such software ever invented.

Push is coming to shove here, and no one knows how the story will play out. Will the defenders of intellectual property be able to hold off the barbarians of the Net? Or will new technological realities force accommodation? Even as corporations race to patent anything and everything they can, and pour hundreds of millions of dollars into defending copyright and attacking software "piracy," the Net is forcing new business models and new ways of thinking on the entire world.

Chapter 10: Free software bootstrapping the world

One can argue that every dollar Microsoft spends attacking software piracy in the third world is a dollar of advertising for Linux and free software. Already, countries like India and China are taking a close look at Linux; it's cheap, it's not tied exclusively to an American corporation and it can be adapted to fit every local need. Free software is a great bootstrapping tool for countries short on resources.

One of the most intriguing points about this is that free software is in large part the product of the most privileged classes of the First World. Programmers, by and large, are paid so well that they can afford to take on hobbies like free software projects in their spare time. And in doing so, they are creating an infrastructure of tools that the whole world can and will benefit from.

Epilogue: The greatest gift

Even if Microsoft isn't toppled by free software, even if Linux doesn't displace Windows 2000 and even if the fundamental dynamics of the information market economy are not completely transformed by the free software movement, the possibility that we have been offered a different path to take is valuable in its own right. The Internet encourages people to work together, if not for profit, then for fun. In the new gift economy, that might be the greatest gift of all.



Copyright © 2000 Salon.com All rights reserved.

Continue Reading...
11.9.08

45+ CSS Web Design Blogs

45+ Blogs related to CSS Web Design

read more | digg story

Continue Reading...

WordPress .htaccess anti-hacking, anti-spam Plugin

Added file revisioning support to .htaccess files, so that every time you update or change the .htaccess files it saves the old copy. The next release will provide a DIFF view of the differences.

read more | digg story

Continue Reading...
21.8.08

CSS Decorative Gallery

Decorate your images and photo galleries without editing the source images.

read more | digg story

Continue Reading...

Custom 404 pages - Webmaster Help Center

Custom 404 pages - Webmaster Help Center: "

Custom 404 pages

A 404 page is what a user sees when they try to reach a non-existent page on your site (because they've clicked on a broken link, the page has been deleted, or they've mistyped a URL). A 404 page is called that because in response to a request for a missing page, webservers send back a HTTP status code of 404 to indicate that a page is not found. While the standard 404 page can vary depending on your ISP, it usually doesn't provide the user with any useful information, and most users may just surf away from your site.

If you have access to your server, we recommend that you create a custom 404 page. A good custom 404 page will help people find the information they're looking for, as well as providing other helpful content and encouraging them to explore your site further.

(Note: This article covers guidelines for creating the content of your custom 404 page. For information on configuring your server to display your new 404 page, check your server or web hoster documentation. You should still make sure that your webserver returns a 404 status code to users and spiders, so that search engines don't accidentally index your custom 404 page.)

Because a 404 page can also be a standard HTML page, you can customize it any way you want. Here are some suggestions for creating an effective 404 page that can help keep visitors on your site and help them find the information they're looking for:

  • Tell visitors clearly that the page they're looking for can't be found. Use language that is friendly and inviting.
  • Make sure your 404 page uses the same look and feel (including navigation) as the rest of your site.
  • Consider adding links to your most popular articles or posts, as well as a link to your site's home page.
  • Think about providing a way for users to report a broken link.
  • No matter how beautiful and useful your custom 404 page, you probably don't want it to appear in Google search results. In order to prevent 404 pages from being indexed by Google and other search engines, make sure that your webserver returns an actual 404 HTTP status code when a missing page is requested.
"

Continue Reading...
20.8.08

.htaccess Plugin Blocks Spam, Hackers, and Password Protects

WordPress Plugin blocks spam, hackers, exploits, and password protects your blog using .htaccess

read more | digg story

Continue Reading...

Crazy Advanced Mod_Rewrite Tutorial

Super Advanced Mod_Rewrite Tutorial for .htaccess filesDecoding Mod_Rewrite VariablesSo when I realized my problem was that I didn’t know the value of the variable being tested by the RewriteCond, I set out to try and discover how to view those variables.. Keep in mind you can also use RewriteLogging, but its only allowed for root users who can edit the httpd.conf, this is .htaccess.Setting Environment Variables with RewriteRuleI discovered a multitude of methods to set and view apache environment variables, using various modules and some core tricks, but the method that allows me to view the most environment variables is RewriteRule.. I wanted to use SetEnvIf more, but its just not as powerful as mod_rewrite, due to programming.This code sets the variable INFO_REQUEST_URI to have the value of REQUEST_URI.

read more | digg story

Continue Reading...
19.8.08

Pimp out your FeedBurner Count

Hidden parameters and Tricks for Customizing the FeedBurner FeedCount Image

read more | digg story

Continue Reading...
18.8.08

WP Plugin: all-in-one htaccess plugin

With .htaccess you can do so many things, but the risky part is almost all the time you need to edit your .htaccess file manually. However, now there is a special htaccess wp plugin for wordpress blogs that does so many things (full features are below the screenshot). All you need is “enable” a particular feature and it will rewrite your .htaccess

read more | digg story

Continue Reading...

AdesBlog.com » WP Plugin: all-in-one htaccess plugin

AdesBlog.com » WP Plugin: all-in-one htaccess plugin: "

With .htaccess you can do so many things, but the risky part is almost all the time you need to edit your .htaccess file manually. However, now there is a special htaccess wp plugin for wordpress blogs that does so many things (full features are below the screenshot). All you need is “enable” a particular feature and it will rewrite your .htaccess file automatically.

wp_htaccess.png

Full Features

  • Directory Protection
    Enable the DirectoryIndex Protection, preventing directory index listings and defaulting.
  • Password Protect wp-login.php
    Requires a valid user/pass to access the login page
  • Password Protect wp-admin
    Requires a valid user/pass to access any non-static (css, js, images) file in this directory.
  • Protect wp-content
    Denies any Direct request for files ending in .php with a 403 Forbidden.
  • Protect wp-includes
    Denies any Direct request for files ending in .php with a 403 Forbidden.
  • Common Exploits
    Block common exploit requests with 403 Forbidden.
  • Stop Hotlinking
    Denies any request for static files (images, css, etc) if referrer is not local site or empty.
  • Safe Request Methods
    Denies any request not using GET,PROPFIND,POST,OPTIONS,PUT,HEAD
  • Forbid Proxies
    Denies any POST Request using a Proxy Server. Can still access site, but not comment. See Perishable Press
  • Real wp-comments-post.php
    Denies any POST attempt made to a non-existing wp-comments-post.php
  • HTTP PROTOCOL
    Denies any badly formed HTTP PROTOCOL in the request, 0.9, 1.0, and 1.1 only
  • SPECIFY CHARACTERS
    Denies any request for a url containing characters other than “a-zA-Z0-9.+/-?=&” - REALLY helps but may break your site depending on your links.
  • BAD Content Length
    Denies any POST request that doesnt have a Content-Length Header
  • BAD Content Type
    Denies any POST request with a content type other than application/x-www-form-urlencoded|multipart/form-data
  • Directory Traversal
    Denies Requests containing ../ or ./. which is a directory traversal exploit attempt
  • PHPSESSID Cookie
    Only blocks when a PHPSESSID cookie is sent by the user and it contains characters other than 0-9a-z - *** Safe, Use
  • NO HOST:
    Denies requests that dont contain a HTTP HOST Header.
  • Bogus Graphics Exploit
    Denies obvious exploit using bogus graphics
  • No UserAgent, No Post
    Denies POST requests by blank user-agents. May prevent a small number of visitors from POSTING.
  • No Referer, No Comment
    Denies any comment attempt with a blank HTTP_REFERER field, highly indicative of spam.
  • Trackback Spam
    Denies obvious trackback spam. See Holy Shmoly!
  • SSL-Only Site
    Redirects all non-SSL (https) requests to your https-enabled url
  • Anti-Spam, Anti-Exploits
    Denies Obvious Spam and uses advanced mod_security protection

Go get it tiger! ;)

Plugin page: www.askapache.com/wordpress/htaccess-password-protect.html

Continue Reading...

Max Design - standards based web design, development and training » Some links for light reading (12/8/08)

Continue Reading...

In Praise of Minify

The first optimization was very easy. I made sure my images were sufficiently cached by adding a quick .htaccess file in the directory where my images are stored on the server. I saw 2 different techniques for doing this. One was based on file extension, such as the technique discussed here if I have a file that’s incorrectly named it will still.

read more | digg story

Continue Reading...
11.8.08

AskApache is pushing mod_rewrite boundaries to the limits

Using Apache’s mod_rewrite allows us to perform basic filtering and application firewalling. AskApache is pushing mod_rewrite boundaries to the limits with a cool plugin that will allow automated anti-hack/spam htaccess rules.

read more | digg story

Continue Reading...
9.8.08

Elite Log File Scrolling with Color Syntax

Scrolls the latest log entries for multiple log files to the current screen or to any other monitor or TTY in color using syntax highlighting, making debugging easier and saving a lot of time for multi-monitor workstations.

read more | digg story

Continue Reading...
18.7.08

Implementing Conditional 304 Gets for RSS and Magpie

HTTP Conditional Get for RSS Hackers

Given the massive confusion exhibited here, I've written a nice, simple guide on how to implement HTTP's Conditional GET mechanism, with regards to producers and consumers of RSS feeds.

This article presumes you are familiar with the mechanics of an HTTP query, and understand the layout of request, response, header and body.

What is a conditional get?

My full-length RSS feed is about 24,000 bytes long. It probably gets updated on average twice a day, but given the current tools, people still download the whole thing every hour to see if it's changed yet. This is obviously a waste of bandwidth. What they really should do, is first ask whether it's changed or not, and only download it if it has.

The people who invented HTTP came up with something even better. HTTP allows you to say to a server in a single query: “If this document has changed since I last looked at it, give me the new version. If it hasn't just tell me it hasn't changed and give me nothing.” This mechanism is called “Conditional GET”, and it would reduce 90% of those significant 24,000 byte queries into really trivial 200 byte queries.

Client implementation

The mechanism for performing a conditional get has changed slightly between HTTP versions 1.0 and 1.1. Like many things that changed between 1.0 and 1.1, you really have to do both to make sure you're satisfying everybody.

When you receive the RSS file from the webserver, check the response header for two fields: Last-Modified and ETag. You don't have to care what is in these headers, you just have to store them somewhere with the RSS file.

Next time you request the RSS file, include two headers in your request.. Your If-Modified-Since header should contain the value you snagged from the Last-Modified header earlier. The If-None-Match header should contain the value you snagged from the ETag header.

If the RSS file has changed since you last requested it, the server will send you back the new RSS file in the perfectly normal way. However, if the RSS file has not changed, the server will respond with a ‘304’ response code (instead of the usual 200), where 304 means ‘Not Modified’. In the case of a 304, the response will have an empty body and the RSS file won't be sent back to you at all.

There's a temptation for clients to put their own date in the If-Modified-Since header, instead of just copying the one the server sent. This is a bad thing, what you should be sending back is exactly the same date the server sent you when you received the file. There's two reasons for this. Firstly, your computer's clock is unlikely to be exactly synchronised with the webserver, so the server could still send you files by mistake. Secondly, if the server programmer has followed this guide (see below), it'll only work if you send back exactly what you received.

Server Implementation for Static Files

If you are using one of those weblogging tools that just sticks regular files on a regular webserver (e.g. or Moveable Type), your webserver will almost certainly already follow the get standard. HTTP 1.1 has been around 31 years now, and there's really not much of an excuse for anyone to not be following it.

One thing you'll have to watch out for, though, is if your site's RSS file is regenerated frequently even when it's not changed. If that happens, the server won't be able to keep track of the last modified time properly, and you'll get people downloading the file even when it's not changed. The solution is for the writers of weblogging tools to optimise their software to make sure that files are only updated if they've actually changed in some way. (i.e. have them generate the new file, compare it with the old one, and if they're the same leave the old one untouched.)

Server Implementation for Dynamic Content

If you've got a weblogging tool that re-generates the RSS file every time a request is made, there's a little more work to do. This section is aimed more at the writers of the tools than at the user, because it's the tool writers that need to fix their software so that it follows the specs.

I'll concentrate purely on RSS files, but the concepts used here can be applied to any page in the weblog, and may further reduce the bandwidth usage for your users.

In your RSS feed generator, you'll have to keep track of two values: the time the file was last modified (converted to Greenwich Mean Time), and an “etag”. According to RFC2616, the etag is an “opaque value”, which means you can put anything you like in it, providing you stick double-quotes around the whole lot. The time in the Last-Modified header needs to be formatted in a certain way, though, the same format used in email headers. For example, ‘Mon, 17 Sep 2001 11:54:29 GMT’.

Whenever someone requests your RSS file, send those values for the Last-Modified and Etag headers. Every web scripting language allows you to add and remove headers like that at will, just check the manual if you don't know how.

Now for the other bit. Whenever someone requests your RSS file, check the headers of their request for an If-Modified-Since header, or an If-None-Match header. If either of them are there, and if [deleted either ] both of them match the values you were planning to send out with the file, then don't send the file. Once again, consult your manual to see how to send back a "304 Not Modified" reply instead of the "200 OK" that you normally would. If you send back the 304 reply, you don't have to generate the RSS file at all. Just send out the headers, followed by two linefeeds to show the headers are done, and the client will know there's nothing else coming.

Technically, what you should do with an If-Modified-Since header is convert it to a date, and compare it with your stored date. However, 90% of the time you can get away with just doing a straight match, so it's probably not worth the effort.

How do I calculate the Last-Modified date?

Easy. It's the time that the most-recently-changed item in the RSS file was modified. Something like that should be pretty easy to store and fetch.

What should I put in an etag?

The Apache server uses a hash of the contents of the file. This isn't necessary though. All the eTag has to be is something that changes every time the file changes. So it could be a version number, or it could even be exactly the same as the Last-Modified date, just in double-quotes.

2002-11-11 Update: A number of people have written to me to remind me of HTTP's Gzip Content-encoding (compressing the files during transfer). This is a little beyond the scope of this essay. The worst thing you can do when suggesting a solution to a problem is to provide alternatives, people end up arguing the alternatives instead of implementing the fix.

Continue Reading...
17.7.08

Tutorials on htaccess | LearnWebDesignOnline.com

Tutorials on htaccess | LearnWebDesignOnline.com: "Tutorials on htaccess

.htaccess (dot-htaccess) is the directory-level configuration file of the Apache web server. It has a lot of control over how your web server works. Here are some tutorials about it.

* Wikipedia entry of .htaccess
* htaccess-guide.com
* Apache tutorial
* Example usage of .htaccess

For example, the following in the .htaccess file


Deny from all


will make sure that people can not browse inc and class files.

And ...

IndexIgnore *

will prevent browser from directory listing your files on your server."

Continue Reading...

Some useful tips to optimize your PHP code « CarlosPSY’s Weblog

Some useful tips to optimize your PHP code « CarlosPSY’s Weblog: "Some useful tips to optimize your PHP code

I’ve found very useful tips to optimize your PHP Code, and accelerate the script execution.

1. If a method can be static, declare it static. Speed improvement is by a factor of 4.
2. echo is faster than print.
3. Use echo’s multiple parameters instead of string concatenation.
4. Set the maxvalue for your for-loops before and not in the loop.
5. Unset your variables to free memory, especially large arrays.
6. Avoid magic like __get, __set, __autoload
7. require_once() is expensive
8. Use full paths in includes and requires, less time spent on resolving the OS paths.
9. If you need to find out the time when the script started executing, $_SERVER[’REQUEST_TIME’] is preferred to time()
10. See if you can use strncasecmp, strpbrk and stripos instead of regex
11. str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4
12. If the function, such as string replacement function, accepts both arrays and single characters as arguments, and if your argument list is not too long, consider writing a few redundant replacement statements, passing one character at a time, instead of one"

Continue Reading...
16.7.08

Index of /rdf

[   ] ATAG10.rdf                       22K  Authoring Tool Accessibility Guidelines 1.0
[   ] CCPP-struct-vocab.rdf 26K Composite Capability/Preference Profiles CC/PP Structure and Vocabularies 1.0
[   ] CSS2.rdf 12K Glossary of Cascading Style Sheets, level 2 CSS2 Specification
[   ] DOM-Level-2-Events.rdf 4.6K Glossary of Document Object Model (DOM) Level 2 Events
[   ] DOM-Level-2-HTML.rdf 5.5K Glossary of Document Object Model (DOM) Level 2 HTML Specification
[   ] DOM-Level-2-Traversal-Range.rdf 5.1K Document Object Model (DOM) Level 2 Traversal and Range Specification
[   ] DOM-Level-3-Events.rdf 27K Document Object Model (DOM) Level 3 Events Specification
[   ] MathML2.rdf 39K Mathematical Markup Language (MathML) Version 2.0
[   ] P3P.rdf 13K The Platform for Privacy Preferences 1.0 (P3P1.0) Specification
[   ] PNG.rdf 47K Portable Network Graphics (PNG) Specification (Second Edition)
[   ] Process.rdf 6.7K World Wide Web Consortium Process Document
[   ] REC-xml-names.rdf 5.7K Namespaces in XML
[   ] REC-xml.rdf 40K Extensible Markup Language (XML) 1.0
[   ] WCA-terms.rdf 40K Web Characterization Terminology Definitions Sheet
[   ] available_lang.rdf 6.8K
[   ] charreq.rdf 7.7K Requirements for String Identity Matching and String Indexing
[   ] copy.xsl 166
[   ] di-gloss.rdf 58K Glossary of Terms for Device Independence
[   ] home2rss092.xsl.xml 4.6K
[   ] hypertext-terms.rdf 20K Hypertext Terms
[   ] index.rdf 20K
[   ] owl-guide.rdf 17K OWL Web Ontology Language Guide
[   ] qa-glossary.rdf 9.2K W3C QA - Quality Assurance glossary
[   ] qaframe-spec.rdf 12K QA Framework: Specification Guidelines
[   ] rdf-mt.rdf 24K RDF Semantics
[   ] rdf-syntax.rdf 6.3K Resource Description Framework (RDF) Model and Syntax Specification
[   ] rfc2616-sec1.rdf 17K Hypertext Transfer Protocol -- HTTP/1.1
[   ] ruby.rdf 9.4K Ruby Annotation
[   ] soap12-part1.rdf 15K SOAP Version 1.2 Part 1: Messaging Framework
[   ] used_lang.rdf 902
[   ] uuag10.rdf 91K User Agent Accessibility Guidelines 1.0
[   ] voicexml20.rdf 23K Voice Extensible Markup Language (VoiceXML) Version 2.0
[   ] w3c-jargon.rdf 19K Glossary of W3C Jargon
[   ] wcag10.rdf 27K Web Content Accessibility Guidelines 1.0
[   ] weaving.rdf 61K Glossary of
[   ] ws-gloss.rdf 99K Web Services Glossary
[   ] xforms.rdf 12K XForms 1.0
[   ] xhtml-modularization.rdf 19K Modularization of XHTML
[   ] xhtml1.rdf 11K XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)
[   ] xkms2-req 12K
[   ] xlink.rdf 18K XML Linking Language (XLink)
[   ] xml-names.rdf 1.6K Namespaces in XML 1.0
[   ] xml-names11.rdf 9.2K Namespaces in XML 1.1
[   ] xml11.rdf 41K Extensible Markup Language (XML) 1.1
[   ] xmlschema-2.rdf 11K XML Schema Part 2: Datatypes
[   ] xpath-datamodel 21K
[   ] xpath-datamodel.rdf 21K XQuery 1.0 and XPath 2.0 Data Model (XDM)
[   ] xpath.rdf 7.4K XML Path Language (XPath)
[   ] xpath20 49K
[   ] xpath20.rdf 49K XML Path Language (XPath) 2.0
[   ] xptr-framework.rdf 8.0K XPointer Framework
[   ] xquery 79K
[   ] xquery.rdf 79K XQuery 1.0: An XML Query Language
[   ] xslt20 81K
[   ] xslt20.rdf 81K XSL Transformations (XSLT) 2.0

Continue Reading...
15.7.08

Producing Great Search Results: Harder than It Looks, Part 1

Producing Great Search Results: Harder than It Looks, Part 1: "Producing Great Search Results: Harder than It Looks, Part 1

By Jared M. Spool

Originally published: Jul 09, 2008

When creating a search results page, it's unfortunately too easy to produce an ineffective design. We know this because, in the course of our research, we've studied hundreds of search results pages. Many of the pages we've studied hurt the user's experience purely because of their design.

A slew of problems occur when users encounter an ineffective search results page: Users can't identify what is relevant to their search. Many of the links are irrelevant to them. They find it hard to tell the differences between the various results, making the choice difficult. These problems force users to click into each result, often ending with them abandoning the search altogether.

The good news is we've seen many effective search results pages. This means there's hope. It also means we can start to look for patterns that separate the effective designs from their less effective counterparts.
Good Design Doesn't Just Happen

In our research, every time we found a site where the search results were doing what they should, we also found a team that had worked really hard to make it that way.

Those teams all have something in common. They've experimented thoroughly, trying out dozens of designs"

Continue Reading...
14.7.08

SEO and importance of 503 Service Temporarily Unavailable

Explains why you need to set your sites up to send 503 Service Temporarily Unavailable headers when your site is down .. i.e., being developed, php issue, etc.

read more | digg story

Continue Reading...
13.7.08

Top RDF namespaces

Top RDF namespaces: "Top RDF namespaces
Tim Finin, 1:00pm 23 September 2007

James Simmons posted about PTSW’s namespaces page, which has a complete list of the 388 namespaces they have seen with frequencies of use. We reported on the Swoogle’s list of the 100 most common RDF namespaces last year. There are some interesting differences. I’ve put the top 20 from each list side by side.

It’s interesting to note that there are only eight namespaces that are common to both lists — these are in black. The ones that are unique to a single list are in red.


PTSW Swoogle
http://xmlns.com/foaf/0.1/ http://www.w3.org/1999/02/22-rdf-syntax-ns#
http://blogs.yandex.ru/schema/foaf/ http://purl.org/dc/elements/1.1/
http://www.w3.org/2003/01/geo/wgs84_pos# http://www.w3.org/2000/01/rdf-schema#
http://rdfs.org/sioc/ns# http://xmlns.com/foaf/0.1/
http://rdfs.org/sioc/types# http://madskills.com/public/xml/rss/module/trackback/
http://www.geonames.org/ontology# http://webns.net/mvcb/
http://www.w3.org/2002/07/owl# http://www.w3.org/2003/01/geo/wgs84_pos#
http://purl.org/vocab/bio/0.1/ http://purl.org/vocab/bio/0.1/
http://smw.ontoware.org/2005/smw# http://purl.org/rss/1.0/modules/syndication/
http://www.w3.org/1999/02/22-rdf-syntax-… http://w"

Continue Reading...
12.7.08

Links to Windows Issues and Tweaks

While I do think that programmers, artists, engineers, etc should be compensated for their work, I do not think that the compensation always needs to be money. I think that an operating system (OS), which is critical to any system, should not have a price tag associated with it. It should be a communal effort and have it's own rewards.

That in mind, we live in a real world and there exist certain operating systems in our world that have built a business on charging people money. Hey, it is a market economy and if people are willing to pay, let them. However, they may not know there is an alternative.

Below are some links that can help you better configure your chosen OS or fix issues with it.

Modifying your Windows XP Boot logo

Changin the winxp logon screen

64bit - x64 - TweakVI for Windows Vista - 32 and 64bit

Using Windows 2000 Terminal Services in Education

changing password

Continue Reading...

Encrypted WordPress Site Backups

backups contain all your sensitive information, its smart to encrypt any sql backups.. and while we’re at it, also encrypt any site backups.

read more | digg story

Continue Reading...
6.7.08

Adding Print Capability to your Site with CSS X

Adding Print Capability to your Site with CSS


Jul 01, 08

css printer friendly websiteIts really nice to be able to print out a webpage you are reading using your browsers built-in print feature. Using CSS you can easily transform your site into a print-friendly site.

Today I received an email from a visitor to my site requesting that I add a way to print site articles on AskApache

Finally, you have so much great stuff that I need to print it take it offline so I can consume it. However, your theme prints just awful with huge empty spaces between paragraphs and especially with some of your example code, i.e. see “Redirect All Feeds to Feedburner’s MyBrand”. Not sure if you care but it would really be great for those of us who print if you could clean it up for nicer printing to fully print your examples and to get rid of the excessive whitespace.

Continue Reading...
4.7.08

AskApache Web Development

AskApache Web Development: "Encrypted WordPress Site Backups_

Bash Shell Script for Encrypted WordPress BackupsEnter your DOMAIN_ROOT and the location of your wp-config.php, and this script finds all the mysql settings by parsing the wp-config.php file, creates GPG encrypted backups, and saves your settings for future quickness."

Continue Reading...
2.7.08

Fsockopen Power Plays

Fsockopen Power Plays: "Fsockopen Examples

fsockopen warningNote the warning sign, fsockopen is dangerous in the sense that you can crash your server, perform a DOS against your own server or other site, use up all your servers available sockets and fd descriptors, use up your bandwidth, etc.. Shouldn’t be a problem unless you are being malicious or careless.

Here are some BOSS fsockopen functions I hacked together yesterday for use in my AskApache Crazy Cache WordPress Plugin. I’ve used code and ideas from 100’s of authors, projects, and docs to try to make this the very best I can.
Intro

This is a working example employing as many of the best-practices, tips, and tricks for using fsockopen on remote streams that I could find."

Continue Reading...

Fsockopen Power Plays

Examples and discussions of the best-practices, tips, and tricks for using fsockopen in php that I could find

read more | digg story

Continue Reading...
20.6.08

Fyodor's Security Reading List

Fyodor's Good Reading List: "Fyodor's Good Reading List

Lighter Reading / Misc

Continue Reading...

Tainted Data PHP Functions

[Summary]
This file describe the sources from which tainted data can be imported.
An conservative approach is taken. Everything that retrieves data from
a source outside PHP, such as the file system or a database, is considered
tainted. Notice that this should be adaptable within the tool.

[Language constructs]
Predefined variables:
$_SERVER $_SESSION
$_GET $_REQUEST
$_POST $_FILES
$_COOKIE

[Internal functions]
Most functions only return tainted data if the parameter given contains tainted data.
* base64_decode | Returns decoded string, could contain tainted data
* base_convert | Returns decoded string with letters if toBase is high enough
* basename | Returns a part of a filename.
* bzread | Returns a string coming from a bz compressed file handle
* chr | Returns the string-representation of the ASCII-number. Could be dangerous if a lot are concatted
* convert_cyr_string | Returns string in cyr-encoding
* current | Returns the current element of an array
* dba_nextkey | Returns the next key in a database
* dns_get_record | Fetch DNS Resource Records associated with a hostname
* end | Returns last element of an array
* extract | Import variables into the current symbol table from an array
* fdf_get_attachment | Extracts an uploaded file from a FDF document
* fdf_open | Opens an FDF document
* fdf_open_string | Opens an FDF-file
* fdf_save_string | Returns the FDF document as a string
* fgetc | Get one character from a file pointer. Could be dangerous if a lot are concatted
* fgetcsv | Gets line from file pointer and parse for CSV fields
* fgets | Gets line from file pointer
* fgetss | Gets line from file pointer and strip HTML tags
* file | Reads entire file into an array
* file_get_contents | Reads entire file into a string
* fopen | Opens a file, binds a resource
* fread | Returns a string of a file read
* func_get_arg | Return an item from the argument list
* func_get_args | Returns an array comprising a function's argument list
* get_browser | Returns info about the browser, using USER_AGENT
* get_headers | Fetches all the headers sent by the server in response to a HTTP request
* get_meta_tags | Extracts all meta tag content attributes from a file and returns an array
* getallheaders | Fetch all HTTP request headers
* getenv | Gets the value of an environment variable, some come from the user
* getopt | Gets options from the command line argument list
* gettext | Lookup a message in the current domain
* gzdeflate | Deflate a string
* gzfile | Read gz-file into an array
* gzgetss | Get a line from a gz-file and strip HTML-tags
* gzopen | Opens a gz-file
* gzread | Reads a gz-file
* headers_list | Returns a list of response headers sent (or ready to send)
* hebrev | Convert logical Hebrew text to visual text
* hebrevc | Same as Hebrev, with newline conversion
* highlight_string | Highlights a string
* html_entity_decode | Convert all HTML entities to their applicable characters
* ibase_blob_import | Create blob, copy file in it, and close it
* iconv | Convert string to requested character encoding
* id3_get_tag | Get all information stored in ID3-tags
* imap_base64 | Decode BASE64 encoded text
* imap_bodystruct | Read the structure of a specified body section of a specific message
* imap_fetchbody | Fetch a particular section of the body of the message
* imap_fetchheader | Returns header for a message
* imap_fetchstructure | Read the structure of a particular message
* imap_headerinfo | Read the header of the message
* imap_headers | Returns headers for all messages in a mailbox
* imap_mime_header_decode | Decode MIME header elements
* implode | Join array elements with a string
* imap_utf8 | Converts MIME-encoded text to UTF-8
* import_request_variables | Import GET/POST/Cookie variables into the global scope
* ircg_nickname_unescape | Decodes encoded nickname
* join | Alias of implode
* ldap_get_values | Get all values from a result entry
* mb_decode_mimeheader | Decode string in MIME header field
* mb_parse_str | Parse GET/POST/COOKIE data and set global variable
* mcrypt_decrypt | Decrypts crypttext with given parameters
* mdecrypt_generic | Decrypt data
* msession_get | Get value from session
* msession_get_array | Get array of msession variables
* msession_get_data | Get data session unstructured data
* msg_receive | Receive a message from a message queue
* ngettext | Plural version of gettext
* ob_get_contents | Return the contents of the output buffer
* ob_get_flush | Flush the output buffer, return it as a string and turn off output buffering
* parse_ini_file | Parse a configuration file
* parse_str | Parses the string into variables
* parse_url | Parse a URL and return its components
* parsekit_compile_string | Compile a string of PHP code and return the resulting op array
* pfpro_process_raw | Process a raw transaction with Payflow Pro
* pfsockopen | Open persistent Internet or Unix domain socket connection
* pg_copy_to | Copy a table to an array
* pg_fetch_all | Fetches all rows from a result as an array
* pg_fetch_array | Fetch a row as an array
* pg_fetch_assoc | Fetch a row as an associative array
* pg_fetch_result | Returns values from a result resource
* pg_fetch_row | Get a row as an enumerated array
* rawurldecode | Decode URL-encoded strings
* readline | Reads a line
* readlink | Returns the target of a symbolic link
* scandir | List files and directories inside the specified path
* shm_get_var | Returns a variable from shared memory
* socket_read | Reads a maximum of length bytes from a socket
* sprintf | Return a formatted string
* SQLiteUnbuffered->fetchAll | Fetches all rows from a result set as an array of arrays
* SQLiteUnbuffered->fetch | Fetches the next row from a result set as an array
* SQLiteDatabase->fetchColumnTypes | Return an array of column types from a particular table
* SQLiteUnbuffered->fetchObject | Fetches the next row from a result set as an object
* SQLiteUnbuffered->fetchSingle | Fetches the first column of a result set as a string
* SQLiteDatabase->singleQuery | Executes a query and returns either an array for one single column or the value of the first row
* stripcslashes | Un-quote string quoted with addcslashes()
* stripslashes | Un-quote string quoted with addslashes()
* strval | Get string value of a variable
* sybase_fetch_array | Fetch row as array
* sybase_fetch_assoc | Fetch a result row as an associative array
* sybase_fetch_assoc | Fetch a result row as an associative array
* sybase_fetch_object | Fetch a row as an object
* sybase_fetch_row | Get a result row as an enumerated array
* sybase_result | Get result data
* token_get_all | Split given source into PHP tokens
* unpack | Unpack data from binary string
* vsprintf | Return a formatted string

[PHP5 only]
* convert_uudecode (5) | Returns an uu-decoded string
* iconv_mime_decode | Decodes a MIME-header field
* iconv_mime_decode_headers| Decodes several MIME-header field
* php_strip_whitespace | Return source with stripped comments and whitespace
* SQLiteDatabase->arrayQuery | Execute a query against a given database and returns an array
* stream_get_contents | Reads remainder of a stream into a string
* stream_get_line | Gets line from stream resource up to a given delimiter


Continue Reading...
12.6.08

Automated Snapshot Backup Shell-Script with cpio

Linux shell script automatically creates backups of a specific folder at regular hourly, nightly, weekly, and monthly intervals. Uses CPIO.

read more | digg story

Continue Reading...
11.6.08

The PHP Benchmark

The PHP Benchmark: "Right now this page has a huge amount of attention by the international website programming community. Because of this I've had many many different opinions emailed to me about what people think about these results and how they were found. Keep sending them in.

This project has been a long time dream for me and I'd love to keep on learning about what I'm doing right / wrong and how we should approach this topic. If you have any information / opinions that you would like to share (especially about the larger bottleneck problems), please contact me via my portfolio.

Chris Vincent
PHPBench.com was constructed as a way to open people's eyes to the fact that not every PHP code snippet will run at the same speed. You may be surprised at the results that this page generates, but that is ok. This page was also created so that you would be able to find discovery in these statistics and then maybe re-run these tests in your own server environment to play around with this idea yourself, by using the code examples (these code examples are automatically generated and as the code in my .php files change, so do they).

NOTE: You must keep in mind to refresh this page a few times to 'catch' the right result. The numbers change sometimes drastically during each refresh. I assume that this is because of PHP's memory garbage collector that drops in randomly and also other processes"

Continue Reading...
10.6.08

The tragic tale of a hacked blog

The girl realized she had been careless. Her blog had been hacked.The hacker had been a sneaky one. She did not see any difference on the front page of her blog. There were no sudden big banners or pop-ups. If she had not checked the details of the visitors to her site, she would never have known.

read more | digg story

Continue Reading...

Various Social and Blogger Sites

ActiveRain ActiveRain http://activerain.com/
Bebo Bebo http://bebo.com/Profile.jsp?MemberId=
Blogger Blogger http://www.blogger.com/profile/
del.icio.us del.icio.us http://del.icio.us/
Digg Digg http://digg.com/users/
DOPPLR DOPPLR http://www.dopplr.com/traveller/
eBay eBay eBay User ID:
Facebook Facebook http://www.facebook.com/profile.php?id=
Flickr Flickr screen name or id:
FriendFeed FriendFeed http://friendfeed.com/
Friendster Friendster http:// .blogs.friendster.com/
Google Calendar Google Calendar email:
Google Reader Google Reader http://www.google.com/reader/shared/
Jaiku Jaiku http:// .jaiku.com/
Jumpcut Jumpcut http://www.jumpcut.com/
Kiva Kiva http://www.kiva.org/lender/
Last.fm Last.fm http://www.last.fm/user/
LinkedIn LinkedIn http://www.linkedin.com/in/
LiveJournal LiveJournal username:
Ma.gnolia Ma.gnolia http://ma.gnolia.com/people/
Multiply Multiply http:// .multiply.com/
MyBlogLog Actions MyBlogLog Actions
Service Added!
Blog Comments Blog Comments
Service Added!
MySpace MySpace http://www.myspace.com/
Netflix Netflix http://rss.netflix.com/QueueRSS?id= (Get your Netflix ID)
OpenID OpenID url:
Plaxo Plaxo email:
Pownce Pownce http://pownce.com/ /
Second Life Second Life name:
Seesmic Seesmic http://seesmic.com/
Shelfari Shelfari http://www.shelfari.com/
StumbleUpon StumbleUpon http:// .stumbleupon.com
Technorati Technorati http://www.technorati.com/people/technorati/
The DJ List The DJ List http://www.thedjlist.com/djs/
30 Boxes 30 Boxes url:
ThisNext ThisNext http://www.thisnext.com/by/ /
Trulia Trulia http://www.trulia.com/voices/profile/
Tumblr Tumblr http:// .tumblr.com
Twitter Twitter http://twitter.com/
TypeKey TypeKey http://profile.typekey.com/ /
Upcoming Upcoming http://upcoming.yahoo.com/user/
Wakoopa Wakoopa http://wakoopa.com/
Wink Wink http://wink.com/p/
Yahoo! Answers Yahoo! Answers http://answers.yahoo.com/my/profile?show=
Yelp Yelp http://www.yelp.com/user_details?userid=
YouTube YouTube http://youtube.com/user/
Zillow Zillow http://www.zillow.com/profile/
Zorpia Zorpia http://www.zorpia.com/

Continue Reading...

About XMPP

About XMPP: "About XMPP

The Extensible Messaging and Presence Protocol (XMPP) is an open XML technology for real-time communication, which powers a wide range of applications including instant messaging, presence, media session management, shared editing, whiteboarding, collaboration, lightweight middleware, content syndication, and generalized XML routing.

The core technology was invented by Jeremie Miller in 1998, refined in the Jabber open-source community in 1999 and 2000, and formalized by the IETF in 2002 and 2003, resulting in publication of the XMPP RFCs in 2004.

Although the core technology is stable, the XMPP community continues to define various XMPP extensions through an open standards process run by the XMPP Standards Foundation. There is also an active community of open-source and commercial developers based at jabber.org."

Continue Reading...

DataPortability.org - Share and remix data using open standards

DataPortability.org - Share and remix data using open standards: "Conect. Control. Share. Remix.
Mission: To Consult, Design, Educate and Advocate Interoperable Data Portability to Users, Developers and Vendors.
Definition: Data Portability is the option to use your personal data between trusted applications and vendors."

Continue Reading...

Plaxo » A Recipe for OpenID-Enabling Your Site

Plaxo » A Recipe for OpenID-Enabling Your Site: "A Recipe for OpenID-Enabling Your Site

Prepared by Joseph Smarr at Plaxo on July 18, 2007.

This is a step-by-step tutorial guide for implementing OpenID consumer-side support with a web site that already has users with accounts. It will explain how to easily let new users sign up for an account on your site using their OpenID URL and how to let existing users attach their OpenID(s) so they can sign in using them.

I developed this guide by talking to fellow OpenID developers at the Internet Identity Workshop and elsewhere, and by implementing OpenID support for Plaxo using these instructions. I've also posted detailed screenshots of Plaxo's implementation for reference. I've intended for this guide to be clear and complete and to follow best-practices, but if you have any questions or feedback, please let me know at joseph@plaxo.com or by posting a comment on Plaxo's blog.

This guide may look a bit long, but my hope is you can just follow it straight through without thinking much, and you'll be completely done by the time you reach the end! :)
Overview

I'm assuming your web site currently has:

* A user database with rows for each user
o Each user has a unique internal user ID
o Users currently sign in using a username/e-mail and password
*"

Continue Reading...
9.6.08

Digg Joins the DataPortability Project

"Digg has joined the DataPortability Project, a group of websites cooperating to help you securely use your data however you want. Why? Because you own your data. It’s that simple. From the start, Digg has supported the idea that you own your own data."

read more | digg story

Continue Reading...

PHP Script - Anti-Spam Human-Checker

PHP-based system that simply asks the user to select which image is different from the others. This would normally be placed at the bottom of the form.The code is very flexible in how the images can be displayed in the form, so can easily integrated into the look-and-feel of any website.

read more | digg story

Continue Reading...
3.6.08

May's DreamHost Site of The Month Winner Highest-Rated Ever

AskApache.com is the May 2008 DreamHost Site of The Month - Historic High Rating

read more | digg story

Continue Reading...
2.6.08

YouTube - cptcoding's Channel

YouTube - cptcoding's Channel: "cpt coding and Bill Dunbar
Please login to perform this operation.
See related Channels
cptcoding
cptcoding
Joined: May 15, 2008
Last Login: 2 weeks ago
Videos Watched: 1
Subscribers: 0
Channel Views: 32
billdunbar cpt practicemanagement medical bda coding daviddann icd documentation billing physician healthcare occupational health
Name: Bill
billdunbar cpt practicemanagement medical bda coding daviddann icd documentation billing physician healthcare occupational health
City: Indianapolis
Hometown: Indianapolis
Country: United States
Occupation: Medical Coding, Medical Billing
Companies: Bill Dunbar and Associates, Inc.
Interests and Hobbies: billdunbar cpt practicemanagement medical bda coding daviddann icd documentation billing physician healthcare occupational health
Website: http://www.billdunbar.com/"

Continue Reading...

Mellow Morning » Setting up .htaccess for Wordpress

Mellow Morning » Setting up .htaccess for Wordpress: "Setting up .htaccess for Wordpress
By Thierry Schellenbach on 05 Sep 2007

Usually .htaccess for Wordpress is set automatically when you change the permalink settings.

Unfortunately for me the Wordpress system was not working properly. When I wrote the first posts on this blog however I did not bother to deal with the issue. Doing so leaves you with two problems:

1. How to set .htaccess
2. How to ensure the links to your old posts get redirected

After reading the great mod_rewrite documentation and combining that with a great .htaccess files here my solution.

In order to deal with the old posts:

RewriteCond %{QUERY_STRING} ^p=11$
RewriteRule ^$ http://www.mellowmorning.com/2007/08/27/picture-resizing-on-steroids/? [R=301,L]
RewriteCond %{QUERY_STRING} ^p=3$
RewriteRule ^$ http://www.mellowmorning.com/2007/08/18/ten-reasons-why-symfony-rocks-part-1/? [R=301,L]
RewriteCond %{QUERY_STRING} ^p=4$
RewriteRule ^$ http://www.mellowmorning.com/2007/08/12/barcamp-events/? [R=301,L]
RewriteCond %{QUERY_STRING} ^feed=atom&cat=1$
RewriteRule ^$ http://www.mellowmorning.com/category/symfony/feed/? [R=301,L]

Note that HTTP_HOST and QUERY_STRING are by not included in the conditions checked by RewriteRule. The rewrite rule only ge"

Continue Reading...
1.6.08

Creating Redirects for Affiliate Links

Creating Redirects for Affiliate Links: ".htaccess redirect

.htaccess redirect

Editing the .htaccess file can make your website inaccessible if done incorrectly. Always make sure you have a back-up of the current version of the .htaccess file, to go back to a working version.

.htaccess is a file on Apache servers. It’s a very powerful tool, but often requires rather detailed technical knowledge to edit. Thankfully it’s not that difficult for the purpose of redirecting pages on server level.

Step 1: Check for existing .htaccess
First you need to find out whether you have a .htaccess file already. Start your FTP-program (make sure your program shows the .htaccess file), browse to the root of your domain and look for it (it’s usually on top of the list). If it’s there, download it. Make sure to make a back-up of the current file!

Step 2: Edit it to add redirects
Open the .htaccess file in a text editor and add the following lines to the file.

# Temporary redirects for affiliate links
Redirect 302 /[subdir]/[filename] http://example.com/?id=12345
Redirect 302 /[subdir]/[filename] http://example.com/?id=34567
# End of affiliate redirects

Now replace /[subdir]/[filename] with the right link, and replace http://example.com/?id=12345 with the address you want to send your visitors to when they click the link.

Make sure you use a temporary redirect. The status code 302 tells the other server that the page is redirected temporary, and that they should not update their addresses to the new address.

For example, for my e-junkie affiliate link this looks like this:

Redirect 302 /go/e-junkie.php http://www.e-junkie.com/?r=11261

Step 3: Save and upload
Upload and overwrite the old .htaccess file on the server.
Again make sure you have a back-up of the old version before you do this!

Step 4: Link to it.
That’s it, now use that link instead of the original link. It doesn’t even matter if there’s a file or not on the original location.

If you’re using WordPress as your (self-hosted) blogging platform, you could also use Joost de Valk’s plugin Robots Meta to edit the .htaccess file from within the WordPress admin interface.

Again, use caution with this file. Make sure you have a copy of a working version and ftp-access to your server in case things go wrong. An error in the .htaccess file could effectively deny you access to the WordPress Admin interface. In which case you’ll have to replace the erroneous file with the back-up through FTP.

Continue Reading...

htaccess and .htaccess rewrite links « WordPress .htaccess

htaccess and .htaccess rewrite links « WordPress .htaccess: "How to Use .htaccess, mod_rewrite, and Related (for Apache)


How to Use .htaccess, mod_rewrite, and Related (for Apache)

SRC: http://brainstormsandraves.com/archives/2005/10/09/htaccess/

Continue Reading...
31.5.08

Fast and Easy Custom WordPress User Registration

Alternative Registration form for WordPress Registers and Logs in a user immediately, no emailed password- user chooses.This is an insecure method due to no email validation, but still pretty sweet!

read more | digg story

Continue Reading...

Upgrading to DreamHost Private Servers

From:

Problems migrating to DreamHostPS

Here are some issues I experienced during migration and the solutions I’ve used.

During this process it is important to note how helpful the DreamHost Support Staff were in putting up with my sometimes overly technical and detailed support requests. Thanks John, Brian, and Robert R!

PHP and HTTPD processes hogging all memory

Unlike on shared hosting accounts, where DH technical people have set up a very robust system, it appears they are missing the expertise of a past employee or something because this new setup is not as robust.. YET!

For instance I started out my account CPU and memory at the MAX (2300 MB / 2300 Mhz) but my sites were all still taking forever to serve content, simply because instead of on the shared servers where user processes and HTTPD instances are more controlled, this account seems to not have very well-thought out limits on it. So if 100 people asked for a page on my site, this server loads up 100 HTTPD processes under dhapache user and loads up 100 processes for the custom-compiled php.cgi I am running. This sounds like a cool thing but in reality it takes up so much of my memory that my bash shell login under SSH runs out of memory and won’t even let me do a simple ps, and it just keeps serving 503’s to anyone else who requests something on my site. DH will have to fix this soon or someone will launch a DDOS attack that will cripple them, unless a googlebot does it first!

Solution
I contacted support and received a very friendly and prompt reply suggesting a bad script and offering to setup a process watcher and killer, which I accepted. Eventually I located the problem to be an ErrorDocument 500 directive in my .htaccess that was pointing to a php file instead of a static .html

No crontabs or cronjobs

None of my crontab files were moved to my new server and in fact I was receiving permission denied just to access my crontab.

Solution
I contacted support and they installed new crontabs for me and offered to copy my old ones.

Static IP Changed for site with non-DreamHost DNS

One site uses DNS from Network Solutions, so when my site was migrated and got a new static IP address, my site went down. It would have been nice and should be expected that in this situation DreamHost would alert you that the change is going to happen so you can update your DNS without your site going offline.

Solution
Logged into my Network Solutions account and updated the DNS for my site to point to the new Static IP.

SSH Hosts, Authorized Keys Broken

Some of my sites and user accounts use passwordless SSH to make some things work, and all of these were made useless when I moved to my new private server.

Solution

  1. Logged into my user accounts with SSH
  2. Deleted the old files in folder .ssh
  3. Created new keys and added them to other accounts
  4. Logged in to new accounts to add to host files

Old Server and Static IP References in Site Files

I have some pretty technical and complex cgi’s, .htaccess files, shell scripts run by cronjobs, php scripts, etc., on some sites and shell accounts, and many of my files contain code to the Static IP and/or dreamhost server, either for access control or for faster connects by connecting straight to an IP instead of having to perform a DNS lookup. So when both the Static IP’s and dreamhost server changed it broke all my files.

Solution
Basically I knew I had to search all of my files and replace the old IP with the new IP. I also had to search files relacing the old server with my new server. To make life simpler, I wrote a simple shell script that I run from my account while logged in using SSH that does this automatically with the added feature of asking me if I would like to make the replacement for each file it finds, which is nice because I don’t want to replace this for old log files and misc stuff.

dreamhostps migration shell script

#!/bin/bash
# Version 1.0 by AskApache 5/29/2008

shopt -s extglob
renice 19 $$

OLDSERVER=208.113.183.103
NEWSERVER=208.113.134.190

FIXFILES=$(grep -R -l -i $OLDSERVER $HOME/!(Maildir|logs|backups|source|tmp|doit|php5|php526|ip_abuse) 2>/dev/null)

for thefile in ${FIXFILES[@]}; do
if [ -f "$thefile" ]; then
echo -e "\n\n\n\n"
echo "___________________________________________________________________"
echo "Name: ${thefile}"
echo "Type: $(command file -b ${thefile})"
echo "Size: $(command du -hs ${thefile}|awk '{ print $1}')"
echo "Matching Lines:"
grep -i --color=auto $OLDSERVER $thefile
echo -e "___________________________________________________________________\n"
echo -en "Replace occurances of $OLDSERVER with $NEWSERVER? [y/N] " ; read -n 1 ans
case "$ans" in
n|N) echo -e "\nSKIPPING..."; ;;
y|Y) echo -e "\nREPLACING..."
cp $thefile $thefile.b1 &>/dev/null
cat $thefile.b1 | sed "s/${OLDSERVER}/${NEWSERVER}/g" 1>$thefile
rm $thefile.b1 &>/dev/null
echo "DONE"; ;;
esac
fi
done
exit 0

Continue Reading...
29.5.08

Advanced Unlimited Hosting - Share your files Anyware

Continue Reading...
15.5.08

Firefox popup- page redirected new location, resend form dat

If you see this message in Firefox."This web page is being redirected to a new location. Would you like to resend the form data you have typed to the new location?"

read more | digg story

Continue Reading...
9.5.08

Favorite .htaccess mod_rewrite examples

mod_rewrite rewrite examples for .htaccess

read more | digg story

Continue Reading...

SEO detailed Robots.txt

Very detailed tutorial dealing with the robots.txt file. Shows examples for google and other search engines. Wordpress robots.txt and phpBB robots.txt sample files.

read more | digg story

Continue Reading...
7.5.08

Add Akismet Anti-Spam to your php forms

How To Add Akismet Anti-spam protection to your php forms

read more | digg story

Continue Reading...
1.5.08

WordPress Plugin for Apache .htaccess Security

New Security features incorporated by the AskApache Password Protection WordPress Plugin

read more | digg story

Continue Reading...
29.4.08

Redirect all feeds to FeedBurner with .htaccess

Use .htaccess to Redirect Feeds to FeedBurner

read more | digg story

Continue Reading...
28.4.08

SEO Secrets of AskApache.com

Non-SEO related Server research has turned up some nice SEO techniquesAll websites are hosted on servers, mostly Apache, and that is the primary topic of this blog. During the past year of this blog, my research into non-seo areas has turned up some very valuable SEO techniques.

read more | digg story

Continue Reading...

User:Cduke250 - DreamHost

Continue Reading...
27.4.08

Apache Wicket - Home

Apache Wicket - Home: "Welcome to Apache Wicket

With proper mark-up/logic separation, a POJO data model, and a refreshing lack of XML, Apache Wicket makes developing web-apps simple and enjoyable again. Swap the boilerplate, complex debugging and brittle code for powerful, reusable components written with plain Java and HTML.

* Check the feature list
* Read some Wicket buzz, some Wicket blogs or Planet Wicket
* Find out why you should use Wicket
* Check out some selected examples in detail or see them and many more in live action
* Take a look at our live component reference
* Go and download Wicket.

Wicket is released under the Ap"

Continue Reading...
26.4.08

Introduction to Named Pipes

"A very useful Linux feature is named pipes which enable different processes to communicate. "

read more | digg story

Continue Reading...

Hiding WordPress Installation Files

Using the HTTP_REFERRAL tag and .htaccess to keep your files obfuscated

read more | digg story

Continue Reading...

Hardening Wordpress with Mod Rewrite and htaccess

not a perfect way to secure your wordpress installation (because of various reasons / factors), but at least it’s going to harden your wordpress better than anything else

read more | digg story

Continue Reading...

About Me

My Photo
Mr. Apache
This is my blogger blog. Different from wordpress but pretty cool. Professional Web Developer from the Old days.. back when Terminal was the only way to get on the 'InterNet'
View my complete profile

Blog Archive

Analytics