2009-04-23 4 views
1

Я выполняю некоторые работы по обслуживанию старой системы, которая работает с PHP 4, и разговаривает с базой данных MS SQL2000 через FreeTDS. Я знаю, это уже звучит несколько страшно!Есть ли способ сделать параметризованные запросы в PHP 4 при использовании базы данных MSSQL?

В большом количестве кода используется небезопасная строка-конкатенация для генерации SQL-запросов. Я проделал определенную работу, чтобы попытаться фильтровать входные данные, чтобы сделать вещи более безопасными, но это дает мне головную боль.

Мне интересно, есть ли что-то, что позволит мне выполнять правильные параметризованные запросы, учитывая текущую настройку? На данный момент я не могу изменить версии PHP или MSSQL.

ответ

1

Если ваш основной интерес к параметризованным запросам - безопасность SQL Injection, я бы искал слой абстракции базы данных, который предоставляет вам функциональность и написан на чистом PHP. Я использовал ADOdb, и это достойный вариант, и похоже, что у них все еще есть более ранняя версия PHP4, доступная для скачивания.

Единственное предостережение этого уровня абстракции может не выполнять «правильные» параметризованные запросы с вашей базой данных. Другими словами, они, возможно, внедрили свой собственный механизм параметризации, а затем отправили полные строки SQL в базу данных. Это важно в MS SQL Server, поскольку «правильные» параметризованные запросы могут привести к значительному увеличению производительности.

+0

Пришло время исследовать, но ADOdb работает хорошо. Спасибо за совет! –

1

Используйте слой абстракции базы данных, например MDB2, что provides them.

+0

Это, кажется, хороший вариант, который я изучил раньше, хотя я не мог найти ссылку, что MDB2 будет работать с PHP4. Вы знаете, если это так? –

+0

Я так считаю, да. – ceejayoz