Of course, it depends which school of economic thought you subscribe to. Personally, I hold a mix of the
neo-classical,
public choice
and
new liberal
views.
BTW, my training is in economics and all these links are gathered from the excellent
market failure page on Wikipedia.
The time you want to limit the character set used in a password is when the password goes into a web form.
Ok, so by doing that you're reducing the chances of receiving input that can be used to inject valid SQL. But there are some other things to consider too.
You're making an assumption in one layer about a layer beneath it. This is coupling and when designing software it is generally best to avoid it if possible - and it is certainly possible in this case.
Although true that you are reducing the likelihood of SQL injection, what about injection into other text-based languages: e.g. XML, HTML, TCL, etc. I've seen injection vulnerabilities in all of these. Are you going to change all input validation if you start using another component that is vulnerable to injection attacks?
By restricting certain characters you're potentially leaking information to an attacker about the makeup of underlying systems. e.g. you're using SQL. This could have ramifications if you do not then apply your input validation rules consistently.
The best solution, in my opinion, is to escape every string that you inject into SQL, HTML, XML, etc, regardless of its source. If you need to inject an unescaped string, then you need to apply rigorous, custom validation. (As Slashdot does with comments, for example.)
I think your solution is ok as a concept to reduce risk, but it introduces several other risks and introduces some new maintenance hassles that are best avoided.
The OS you're talking about is EROS, an orthogonally persistent operating system. EROS doesn't seem to be under active development, but other OSes are. The one I know about is Unununium.
And yes, I agree it is a design issue, not a limitation of our hardware and software.
Many people in the IT industry have made a profession out of their hobby (myself included). In my experience, people with geek tendencies often find an IT course and career quite rewarding. Every decision like this is a bit of a lottery, so you might have to try something out and see how like it.
On the other hand, this is also quite convenient. I live in the US now, and I travel around quite a bit. I often surf on Swedish Internet sites, typically without access to a Swedish keyboard. It would not be very convenient if the domain names used non-English symbols.
The Open Web Application Security Project have a guide to help those who want to improve the security of their web applications. I've had a skim and it looks pretty good. They claim two million downloads, so other people must think so too.:-)
Eclipse is running inside IKVM.NET, a JVM for.NET/Mono. The idea of IKVM is to allow Java bytecodes to run inside a.NET VM. It's pretty cool, check out the FAQ.
You may wish to avoid fixing the size of layout elements too. One way to do this is to define element widths, heights and positions in ems. An em is a standard typographical measurement defined as the width of an "m" character. In CSS an em is the width of an "m" in an element's font.
I usually use both px and em when laying out a web page. I use px to position elements accurately and I use em to define spacing that relates to text. For example, I would use ems to set paragraph spacing and padding around text. This keeps things looking nice at a variety of different text sizes.
One would think (well, we did;-) that the latest round of Gb/s
network hardware would have made the design of a high-bandwidth
cluster network a trivial exercise. However, that isn't the
case when the prices are considered:
When we invented FNNs in 2000, the cheapest of the Gb/s NICs
available were PCI Ethernet cards priced under $300 each; now
they are $50-$100. Prices have continued to drop. Prices on
custom high-performance NICs (e.g., Myrinet) start at close to
$1000 and have not been going down.
In late 2002, 48-port 100Mb/s Fast Ethernet switches have
dropped to less than $25/port. Gigabit Ethernet switches are
starting to follow the same trend, with $100/port pricing in
sight for switches up to about 48 ports. Wider switches with
the needed performance are unlikely to become cheap in the near
future. Thus, it would be necessary to build a heirarchical
switch fabric using multiple layers of switches, yielding higher
cost, higher latency, and significantly lower bisection
bandwidth (unless you use a "fat tree" or other scheme, which
adds still more expense -- especially because cheap layer 2
Ethernet switches don't support those topologies).
In summary, the cost of the "obvious" Gb/s network for KLAT2's
66 single-processor nodes was OVER 30 TIMES the
cost of the network we built for KLAT2. In fact, to match
KLAT2's bisection bandwidth, a network built using Gb/s hardware
would have cost even more. Gigabit Ethernet is getting cheaper,
but obvious topologies just are not competitive with FNN
performance. So, if you've got tons of money that you have to
spend immediately, you can impress your friends by buying
expensive custom network hardware that can use an obvious
topology and still be competitive with FNN performance.
Otherwise, read on....;-)
It can definitely take more than a few seconds A person at my workplace shut down their computer (it was "under attack") and then contacted me for support.
At least 5 minutes of wasted time, plus a lot of hassle.
Peter Norvig has a thoughtful list of suggestions.
Sure, in a perfectly competitive market with symmetric information and no externalities over the long-term you might achieve optimal allocation of resources. But that's not the case here.
Of course, it depends which school of economic thought you subscribe to. Personally, I hold a mix of the neo-classical, public choice and new liberal views.
BTW, my training is in economics and all these links are gathered from the excellent market failure page on Wikipedia.
You may find a recent discussion on Lambda the Ultimate relevant to your question.
Ok, so by doing that you're reducing the chances of receiving input that can be used to inject valid SQL. But there are some other things to consider too.
The best solution, in my opinion, is to escape every string that you inject into SQL, HTML, XML, etc, regardless of its source. If you need to inject an unescaped string, then you need to apply rigorous, custom validation. (As Slashdot does with comments, for example.)
I think your solution is ok as a concept to reduce risk, but it introduces several other risks and introduces some new maintenance hassles that are best avoided.
Also, it reduces the security of passwords. :-)
The OS you're talking about is EROS, an orthogonally persistent operating system. EROS doesn't seem to be under active development, but other OSes are. The one I know about is Unununium.
And yes, I agree it is a design issue, not a limitation of our hardware and software.
Many people in the IT industry have made a profession out of their hobby (myself included). In my experience, people with geek tendencies often find an IT course and career quite rewarding. Every decision like this is a bit of a lottery, so you might have to try something out and see how like it.
I've used these guys for a few months now. There service seems very good so far - friendly and responsive.
Just type it in punycode. Easy!
Needless to say, I didn't try to insert my card. :-)
The Open Web Application Security Project have a guide to help those who want to improve the security of their web applications. I've had a skim and it looks pretty good. They claim two million downloads, so other people must think so too. :-)
If you're feeling lazy, you could do worse than reading their list of the top ten web application vulnerabilities.
Eclipse is running inside IKVM.NET, a JVM for .NET/Mono. The idea of IKVM is to allow Java bytecodes to run inside a .NET VM. It's pretty cool, check out the FAQ.
You may wish to avoid fixing the size of layout elements too. One way to do this is to define element widths, heights and positions in ems. An em is a standard typographical measurement defined as the width of an "m" character. In CSS an em is the width of an "m" in an element's font.
I usually use both px and em when laying out a web page. I use px to position elements accurately and I use em to define spacing that relates to text. For example, I would use ems to set paragraph spacing and padding around text. This keeps things looking nice at a variety of different text sizes.
I use Keyring to store most of my passwords. It encrypts all the passwords with 3DES using a key derived from a passphrase I supply.
I expect this makes it secure against snooping on the wire during a hotsync. I think the passphrase would be needed to cause any harm.
Rich
Here's a quote from the site:
It can definitely take more than a few seconds A person at my workplace shut down their computer (it was "under attack") and then contacted me for support.
At least 5 minutes of wasted time, plus a lot of hassle.
If I was Microsoft, I wouldn't even consider it. It wouldn't read very well: