OT: Decrypting PHP preg_replace Strings
Richard Gaskin
ambassador at fourthworld.com
Mon Dec 26 10:40:54 EST 2011
Sivakatirswami wrote:
> We have hackers on our web server getting in thru one Domain... I think
> there is a whole in WordPress.
...
> I can't wait until move our site over to RevIgniter; I think it will be
> much more secure!
Well, at least with injection attacks from buffer overruns, according to
Dr. Raney the LC engine is far more secure than most alternatives:
<http://www.mail-archive.com/metacard@lists.runrev.com/msg02659.html>
I've been giving this subject a lot of thought recently, since a friend
of mine had a site that was compromised using a similar exposure in
Drupal. The Drupal folks have since closed that particular hole, but
this raises two key points:
1. If you're using any third-party CMS, you really need to be prepared
to stay on top of updates. A powerful CMS is also a complex one, and as
complexity grows the range of potential entry points grows along with it.
2. If you write your own CMS, it may be helpful to change some coding
habits to write more defensively.
Here's one example of this latter point:
For many years I've been in the habit of using "put url..." to get local
file data, but if a system provides any way in which the name of the
file being read is affected by inputs from the browser, it can be
possible for that local URL reference to be a remote URL to some
nefarious site.
So now, when writing CGIs I take the time to use
"open..."/"read..."/"close..." instead.
While it takes a few more lines to write, it obviates the possibility
that such code can be misused to inject remote URLs.
Of course even better is to monitor incoming params to eliminate the use
of undesirable remote URLs, and that should be done too.
But as a system grows you may add features down the road which open up
such possibilities, and if you've adopted defensive coding habits up
front the implications are not so severe.
So at a minimum, these days when writing CGIs I make an effort to:
1. Never use "put url..." for local file access
2. Carefully error-check incoming params to avoid unwanted data
What other practices might we consider to make our CGIs more secure?
For example, SQL injection is a common vulnerability, and PHP provides a
function to sanitize data going into the DB. Any of you have a similar
LiveCode function to sanitize data?
--
Richard Gaskin
Fourth World
LiveCode training and consulting: http://www.fourthworld.com
Webzine for LiveCode developers: http://www.LiveCodeJournal.com
LiveCode Journal blog: http://LiveCodejournal.com/blog.irv
More information about the use-livecode
mailing list