Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7680707
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 31, 20262026-05-31T18:10:37+00:00 2026-05-31T18:10:37+00:00

Let me preface this by saying that I’m well aware that running user supplied

  • 0

Let me preface this by saying that I’m well aware that running user supplied code in a server environment is risky. Humour me – my question is specific to string evaluation and the subset of the language that can be executed in that context.

So I’m building a template generation system right now, and I want it to be fast. Super, super, super fast. This thing is going to get thrashed for mass email mailouts and that kind of thing. The approach I’m using is for users to supply user-entered template tags, which get turned into PHP variable substitutions via regexes before storing. Assuming my regexes are bulletproof, do you feel like the security of this process is acceptable?

  • template is input by user, with tags like [[contact.name]] and similar.
  • upon saving, regex transforms these into PHP variables, so the above wildcard becomes {$contact['name']} within the template string.
  • We also check for the presence of anything that could be transformed into an accessible variable from superglobal scope, so [[_SERVER]], [[GLOBALS]] etc as well as [[this are all disallowed and logged as hack attempts.
  • Other characters which have special meaning within a double quoted string ($, " and \) are escaped as well.
  • the generation process goes like this:
    • generation is a class method that gets run. The only variable passed in is $contact, which is an array.
    • the template string is read out into another local variable (in this case, $__templateString). Users could theoretically access this variable in their templates, but it doesn’t really matter if they do – not a security risk, just dumb.
    • The code to generate the template is then simply eval('return "' . $__templateString . '";');

Any holes I’m missing here? I am pretty sure the only potential risks are matters of scope access, and I think I’ve covered all my bases there.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-31T18:10:38+00:00Added an answer on May 31, 2026 at 6:10 pm

    So what if I enter this template:

    " . mysql_query('DROP TABLE users') . "
    

    It’s nice that you are guarding against possible access to variables you don’t want people to access, but eval evaluates all code, not just variables. And try to find a regex to filter that out…

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Let me preface this by saying that my code seems to work for all
So let me preface this by saying that I'm not an SQL wizard by
Let me preface this by saying that I'm pretty new to Java. I have
Let me preface this by saying that I know the ContactCenter sample is just
Let me preface this with saying that I am new to Ruby. I was
First let me preface this question by saying that I'm fairly new to Javascript.
Let me just preface by saying it's actually my crappy code that's leaking and
Let me preface this by saying that perhaps there's a better way to do
First off, let me preface this question by saying that my professor is firmly
(PHP/MySQL) Let me preface by saying that this works, and that I'm wondering if

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.