我是erlang的新手,我需要编写一些代码来在MySQL数据库中插入行。如何使用Erlang防止SQL注入?是否还有其他语言的预备陈述之类的东西,或者我应该怎么做?
多谢您的回覆。
该答案取决于您使用的驱动程序。
Erlang ODBC具有param_query函数,该函数将一组参数绑定到查询,并且还可能转义所有SQL特殊字符。
erlang-mysql-driver已经准备了以下语句:
%% Register a prepared statement mysql:prepare(update_developer_country, <<"UPDATE developer SET country=? where name like ?">>), %% Execute the prepared statement mysql:execute(p1, update_developer_country, [<<"Sweden">>,<<"%Wiger">>]),
(来自Yariv博客的代码)
作为最后的选择,您总是可以逃脱角色
NUL (0x00) --> \0 BS (0x08) --> \b TAB (0x09) --> \t LF (0x0a) --> \n CR (0x0d) --> \r SUB (0x1a) --> \z " (0x22) --> \" % (0x25) --> \% ' (0x27) --> \' \ (0x5c) --> \\ _ (0x5f) --> \_