open source pdf to image converter c# : Change font in pdf fillable form application Library tool html asp.net wpf online 5238-part561

14.1 Introduction 
In a perfect world, encryption wouldn't be necessary. Nosy people would keep their eyes on 
their own data, and a credit card number floating around the Internet would attract no special 
attention. In so many ways, however, our world isn't perfect, so we need encryption.  
Encryption scrambles data. Some data scrambling can't be unscrambled without unreasonable 
amounts of processing. This is called one-way encryption . Other encryption methods work in 
two directions: data is encrypted; then it's decrypted.  
PHP supplies tools to encrypt and secure your data. Some tools, such as the 
crypt( )
and 
md5( )
functions, are part of PHP's base set of functions, and some are extensions that need 
to be explicitly included when PHP is compiled (e.g., mcryptmhash, and cURL).  
The 
crypt( )
function does one-way DES encryption using the first eight characters of 
plaintext to calculate the ciphertext. You pass it the plaintext to encrypt (and a salt, which 
strengthens the encryption), and it returns the encrypted ciphertext. PHP generates a random 
salt if you don't supply one:  
print crypt('shrimp','34'); 
34b/4qaoXmcoY 
If the constant 
CRYPT_MD5
is set to 1, 
crypt( )
can do MD5 encryption. To tell PHP to use 
MD5 encryption, start the salt with 
$1$
 
print crypt('shrimp','$1$seasalt!'); 
$1$seasalt!$C8bRD475BC3T4EvjjmR9I
Recipe 14.5
discusses 
crypt( )
. It is most widely used for encrypting passwords.  
mcrypt is a more full-featured encryption library that offers different algorithms and 
encryption modes. Because it supports different kinds of encryption, mcrypt is especially 
helpful when you need to exchange encrypted data with other systems or with programs not 
written in PHP. mcrypt is discussed in detail in Recipe 14.8
.  
PHP gives you the tools to protect your data with robust encryption, but encryption is just part 
of the large and often complex security picture. Your encrypted data can be unlocked with a 
key, so protecting that key is very important. If your encryption keys are accessible to 
unauthorized users (because they're stored in a file accessible via your web server or because 
they're stored in a file accessible by other users in a shared hosting environment, for 
example), your data is at risk, no matter how airtight your chosen encryption algorithm is.  
You need to determine how secure you want your data to be. Encrypting it is more secure but 
more complex. Simpler encoding hides your data from elementary prying eyes but offers less 
security. No encryption or security is absolute. Picking an appropriate security method means 
finding a place on the spectrum between convenience and protection. The more convenient (or 
Change font in pdf fillable form - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
add form fields to pdf online; chrome save pdf with fields
Change font in pdf fillable form - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
add text fields to pdf; adding text field to pdf
computationally inexpensive) types of security generally provide less protection. Sometimes 
your goal isn't to protect data from prying eyes but to avoid the appearance of impropriety. 
Seeing a plaintext field in a form (or URL) named "Password" could be more disturbing to your 
users than the same data wrapped in Base64 encoding. Recipe 14.3
shows how to obscure 
data with Base64.  
Sensitive data needs to be protected not just on the server but also when it's traveling on the 
network between your server and your users. Data sent over regular HTTP is visible to 
anybody with access to the network at any point between your server and a user. Recipe 
14.11
discusses how to layer HTTP over SSL to prevent network snoopers from peeping at 
data as it passes by.  
There are plenty of nontechnical prerequisites to tight security. Assigning passwords that are a 
random jumble of letters, numbers, and punctuation does no good if those passwords are so 
hard to remember that users write them on sticky notes attached to their monitors. As we 
have already said, security is not an absolute, but a tradeoff between convenience and 
protection. As you use the recipes in this chapter to protect your data, decide what is an 
acceptable risk for your data versus the corresponding appropriate level of inconvenience that 
security introduces.
[1]
[1]
Practical Unix and Internet Security, by Simson Garfinkel and Gene Spafford 
(O'Reilly) offers some helpful and (not surprisingly) practical advice on how to 
think about the balancing act of risk management. 
Recipe 14.2 Keeping Passwords Out of Your Site Files 
14.2.1 Problem 
You need to use a password to connect to a database, for example. You don't want to put the 
password in the PHP files you use on your site in case those files are compromised.  
14.2.2 Solution 
Store the password in an environment variable in a file that the web server loads when 
starting up; then, just reference the environment variable in your script:  
mysql_connect('localhost',$_ENV['MYSQL_USER'],$_ENV['MYSQL_PASSWORD']); 
14.2.3 Discussion 
While this technique removes passwords from the source code of your pages, it does make 
them available in other places that need to be protected. Most importantly, make sure that 
there are no publicly viewable pages that call 
phpinfo( )
. Because 
phpinfo( )
displays 
environment variables available to scripts, it displays the passwords put into environment 
variables.  
C# PDF Text Box Edit Library: add, delete, update PDF text box in
framework. Able to create a fillable and editable text box to PDF document in C#.NET class. Support to change font color in PDF text box.
best pdf form creator; best program to create pdf forms
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Change Word hyperlink to PDF hyperlink and bookmark. VB.NET Demo Code for Converting Word to PDF. Add necessary references: RasterEdge.Imaging.Font.dll.
pdf add signature field; create a fillable pdf form from a word document
Next, especially if you are in a shared hosting setup, make sure that the environment 
variables are set in such a way that they are available only to your virtual host, not to all 
shared hosting users. With Apache, you can do this by setting the variables in a separate file 
from the main configuration file:  
SetEnv  MYSQL_USER     "susannah" 
SetEnv  MYSQL_PASSWORD "y23a!t@ce8" 
Inside the 
<VirtualHost>
directive for the site in the main configuration file, include this 
separate file as follows:  
Include "/usr/local/apache/database-passwords" 
Make sure that the separate file that contains the passwords (e.g., 
/usr/local/apache/database-passwords) is not readable by any users other than the one that 
controls the appropriate virtual host. When Apache starts up and is reading in configuration 
files, it's usually running as root, so it is able to read the included file.  
14.2.4 See Also 
Documentation on Apache's 
Include
directive at 
http://httpd.apache.org/docs/mod/core.html#include
Recipe 14.3 Obscuring Data with Encoding 
14.3.1 Problem 
You want to prevent data being viewable as plaintext. For example, you don't want hidden 
form data to be revealed simply by someone viewing the source code of a web page.  
14.3.2 Solution 
Encode the data with 
base64_encode( )
:  
$personal_data = array('code' => 5123, 'blood_type' => 'O'); 
$info = base64_encode(serialize($personal_data)); 
print '<input type="hidden" name="info" value="'.$info.'">'; 
<input type="hidden" name="info" 
value="YToyOntzOjQ6ImNvZGUiO2k6NTEyMztzOjEwOiJibG9vZF90eXBlIjtzOjE6Ik8iO30=
"> 
Decode the data with 
base64_decode( )
:  
$personal_data = unserialize(base64_decode($_REQUEST['info'])); 
get_transfusion($personal_data['blood_type']); 
14.3.3 Discussion 
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Change Excel hyperlink to PDF hyperlink and bookmark. VB.NET Demo Code for Converting Excel to PDF. Add necessary references: RasterEdge.Imaging.Font.dll.
pdf form change font size; adding signature to pdf form
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Change Word hyperlink to PDF hyperlink and bookmark. C#.NET Sample Code: Convert Word to PDF in C#.NET Project. RasterEdge.Imaging.Font.dll.
adding form fields to pdf files; pdf form save in reader
The Base64 algorithm encodes data as a string of letters, numbers, and punctuation marks. 
This makes it ideal for transforming binary data into a plaintext form and also for obfuscating 
data.  
14.3.4 See Also 
Documentation on 
base64_encode( )
at http://www.php.net/base64-encode
and 
base64_decode( )
at http://www.php.net/base64-decode
; the Base64 algorithm is defined 
in RFC 2045, available at http://www.faqs.org/rfcs/rfc2045.html
Recipe 14.4 Verifying Data with Hashes 
14.4.1 Problem 
You want to make sure users don't alter data you've sent them in a cookie or form element.  
14.4.2 Solution 
Along with the data, send an MD5 hash of the data with a secret word. When you receive the 
data back, compute the hash of the received value with the same secret word. If they don't 
match, the user has altered the data.  
Here's how to print a hash in a hidden form field: 
$secret_word = 'flyingturtle'; 
$id = 2836; 
$hash = md5($secret_word . $id); 
print<<<_HTML_ 
<input type="hidden" name="id" value="$id"> 
<input type="hidden" name="idhash" value="$hash"> 
_HTML_; 
Here's how to verify the hidden form field data when it's submitted:  
$secret_word = 'flyingturtle'; 
if (md5($secret_word . $_REQUEST['id']) == $_REQUEST['idhash']) { 
$id = $_REQUEST['id']; 
} else { 
die("Invalid data in $_REQUEST[id]"); 
14.4.3 Discussion 
When processing the submitted form data, compute the hash of the submitted value of 
$_REQUEST['id']
and the secret word. If it matches the submitted hash, the value of 
$_REQUEST['id']
has not been altered by the user. If the hashes don't match, you know 
that the value of 
$_REQUEST['id']
you received is not the same as the one you sent.  
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
An advanced .NET control to change ODT, ODS, ODP forms to fillable C#.NET Project DLLs: Conversion from OpenOffice to PDF in C#.NET. RasterEdge.Imaging.Font.dll.
change font in pdf fillable form; can reader edit pdf forms
VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to
Files; Split PDF Document; Remove Password from PDF; Change PDF Permission Settings. VB.NET Demo Code for Converting PowerPoint to PDF. RasterEdge.Imaging.Font.dll
change font size pdf form reader; adding images to pdf forms
To use a verification hash with a cookie, add the hash to the cookie value with 
join( )
:  
$secret_word = 'flyingturtle'; 
$cookie_value = 'Ellen'; 
$hash = md5($secret_word . $id); 
setcookie('name',join('|',array($cookie_value,$hash))); 
Parse the hash from the cookie value with 
explode( )
:  
$secret_word = 'flyingturtle'; 
list($cookie_value,$cookie_hash) = explode('|',$_COOKIE['name'],2); 
if (md5($secret_word . $cookie_value) == $cookie_hash) { 
$name = $cookie_value; 
} else { 
die('Invalid data in $_COOKIE[name]'); 
Using a data-verification hash in a form or cookie obviously depends on the secret word used 
in hash computation. If a malicious user discovers your secret word, the hash offers no 
protection. Aside from guarding the secret word zealously, changing it frequently is a good 
idea. For an additional layer of protection, use different secret words, choosing the specific 
word to use in the hash based on some property of the 
$id
value (10 different words selected 
by 
$id%10
, for example). That way, damage is controlled if one of the words is compromised.  
If you have the mhash module installed, you're not limited to MD5 hashes. mhash supports a 
number of different hash algorithms. For more information about mhash, see the mhash 
material in the online PHP manual or the mhash home page at http://mhash.sourceforge.net/
 
14.4.4 See Also 
Recipe 8.11
uses a verification hash for cookie-based authentication; Recipe 9.4
for an 
example of using hashes with hidden form variables; documentation on 
md5( )
at 
http://www.php.net/md5
and the mhash extension at http://www.php.net/mhash
Recipe 14.5 Storing Passwords 
14.5.1 Problem 
You need to keep track of users' passwords so they can log in to your web site.  
14.5.2 Solution 
When a user signs up, encrypt her chosen password with 
crypt( )
and store the encrypted 
password in your database of users:  
// encrypt the password 
$encrypted_password = crypt($_REQUEST['password']); 
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Convert multiple pages PowerPoint to fillable and editable PDF documents. C#.NET Demo Code: Convert PowerPoint to PDF in C#.NET RasterEdge.Imaging.Font.dll.
changing font size in pdf form field; best way to make pdf forms
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Create fillable and editable PDF documents from Excel in both .NET WinForms C# Demo Code: Convert Excel to PDF in Visual C# .NET RasterEdge.Imaging.Font.dll.
adding text to a pdf form; add fields to pdf
// store $encrypted_password in the user database  
$dbh->query('INSERT INTO users (username,password) VALUES (?,?)', 
array($_REQUEST['username'],$encrypted_password)); 
Then, when that user attempts to log in to your web site, encrypt the password she supplies 
with 
crypt( )
and compare it to the stored encrypted password. If the two encrypted values 
match, she has supplied the correct password:  
$encrypted_password =  
$dbh->getOne('SELECT password FROM users WHERE username = ?', 
array($_REQUEST['username'])); 
if (crypt($_REQUEST['password'],$encrypted_password) == 
$encrypted_password) { 
// successful login 
} else { 
// unsuccessful login 
14.5.3 Discussion 
Storing encrypted passwords prevents users' accounts from becoming compromised if an 
unauthorized person gets a peek at your username and password database. (Although such 
unauthorized peeks may foreshadow other security problems.)  
When the password is initially encrypted, 
crypt( )
supplies two randomly generated 
characters of salt that get prepended to the encrypted password. Passing 
$encrypted_password
to 
crypt( )
when testing a user-supplied password tells 
crypt( )
to use the same salt characters again. The salt reduces your vulnerability to dictionary 
attacks, in which someone compares encrypted passwords with encrypted versions of common 
words. Still, it's a good idea to prevent users from choosing passwords that are simple words 
or other easier-to-crack combinations. Recipe 14.6
provides a function to filter out easily 
guessable passwords.  
The 
crypt( )
function uses a one-way algorithm. This means it's currently impossible (or at 
least prohibitively computationally expensive) to turn a 
crypt( )
-generated ciphertext back 
into plain text. This makes your stored passwords somewhat more secure, but it also means 
that you can't get at the plaintext of users' passwords even if you need to. So, for example, if 
a user forgets his password, you won't be able to tell him what it is. The best you can do is to 
reset the password to a new value and then tell the user the new password. A method for 
dealing with lost passwords is covered in Recipe 14.7
.  
14.5.4 See Also 
Recipe 14.9
for information on storing encrypted data; documentation on 
crypt( )
at 
http://www.php.net/crypt
C# Create PDF Library SDK to convert PDF from other file formats
Create fillable PDF document with fields. Load PDF from existing documents and image in SQL server. RasterEdge.Imaging.Font.dll. RasterEdge.XDoc.PDF.dll.
change text size pdf form; change font pdf form
Recipe 14.6 Checking Password Strength 
14.6.1 Problem 
You want to make sure users pick passwords that are hard to guess.  
14.6.2 Solution 
Test a user's password choice with the 
pc_passwordcheck( )
function, shown later in 
Example 14-1
. For example:  
if ($err = pc_passwordcheck($_REQUEST['username'],$_REQUEST['password'])) { 
print "Bad password: $err"; 
// Make the user pick another password 
14.6.3 Discussion 
The 
pc_passwordcheck( )
function, shown in Example 14-1
, performs some tests on user-
entered passwords to make sure they are harder to crack. It returns a string describing the 
problem if the password doesn't meet its criteria. The password must be at least six characters 
long and must have a mix of uppercase letters, lowercase letters, numerals, and special 
characters. The password can't contain the username either in regular order or reverse order. 
Additionally, the password can't contain a dictionary word. The filename for the word list used 
for dictionary checking is stored in 
$word_file
.  
The checks for the username or dictionary words in the password are also applied to a version 
of the password with letters substituted for lookalike numbers. For example, if the supplied 
password is 
w0rd$%
, the function also checks the string 
word$%
for the username and 
dictionary words. The "0" character is turned into an "o." Also, "5" is turned into "s," "3" into 
"e," and both "1" and "!" into "l" (el).  
Example 14-1. pc_passwordcheck( )  
function pc_passwordcheck($user,$pass) { 
$word_file = '/usr/share/dict/words'; 
$lc_pass = strtolower($pass); 
// also check password with numbers or punctuation subbed for letters 
$denum_pass = strtr($lc_pass,'5301!','seoll'); 
$lc_user = strtolower($user); 
// the password must be at least six characters 
if (strlen($pass) < 6) { 
return 'The password is too short.'; 
// the password can't be the username (or reversed username)  
if (($lc_pass == $lc_user) || ($lc_pass == strrev($lc_user)) || 
($denum_pass == $lc_user) || ($denum_pass == strrev($lc_user))) { 
return 'The password is based on the username.'; 
// count how many lowercase, uppercase, and digits are in the password  
$uc = 0; $lc = 0; $num = 0; $other = 0; 
for ($i = 0, $j = strlen($pass); $i < $j; $i++) { 
$c = substr($pass,$i,1); 
if (preg_match('/^[[:upper:]]$/',$c)) { 
$uc++; 
} elseif (preg_match('/^[[:lower:]]$/',$c)) { 
$lc++; 
} elseif (preg_match('/^[[:digit:]]$/',$c)) { 
$num++; 
} else { 
$other++; 
// the password must have more than two characters of at least  
// two different kinds  
$max = $j - 2; 
if ($uc > $max) { 
return "The password has too many upper case characters."; 
if ($lc > $max) { 
return "The password has too many lower case characters."; 
if ($num > $max) { 
return "The password has too many numeral characters."; 
if ($other > $max) { 
return "The password has too many special characters."; 
// the password must not contain a dictionary word  
if (is_readable($word_file)) { 
if ($fh = fopen($word_file,'r')) { 
$found = false; 
while (! ($found || feof($fh))) { 
$word = preg_quote(trim(strtolower(fgets($fh,1024))),'/'); 
if (preg_match("/$word/",$lc_pass) || 
preg_match("/$word/",$denum_pass)) { 
$found = true; 
fclose($fh); 
if ($found) { 
return 'The password is based on a dictionary word.'; 
return false; 
14.6.4 See Also 
Helpful password choosing guidelines are available at 
http://tns.sdsu.edu/security/passwd.html
Recipe 14.7 Dealing with Lost Passwords 
14.7.1 Problem 
You want to issue a password to a user who claims he's lost his password.  
14.7.2 Solution 
Generate a new password and send it to the user's email address (which you should have on 
file):  
// generate new password 
$new_password = ''; 
$i = 8; 
while ($i--) { $new_password .= chr(mt_rand(33,126)); } 
// encrypt new password 
$encrypted_password = crypt($new_password); 
// save new encrypted password to the database 
$dbh->query('UPDATE users SET password = ? WHERE username = ?', 
array($encrypted_password,$username)); 
// email new plaintext password to user 
mail($email,"New Password","Your new password is $new_password"); 
14.7.3 Discussion 
If a user forgets his password, and you store encrypted passwords as recommended in Recipe 
14.5
, you can't provide the forgotten password. The one-way nature of 
crypt( )
prevents 
you from retrieving the unencrypted password.  
Instead, generate a new password and send that to his preexisting contact address. If you 
send the new password to an address you don't already have on file for that user, you don't 
have a way to verify that the new address really belongs to the user. It may be an attacker 
attempting to impersonate the real user.  
Because the email containing the new password isn't encrypted, the code in the Solution 
doesn't include the username in the email message to reduce the chances that an attacker 
that eavesdrops on the email message can steal the password. To avoid disclosing a new 
password by email at all, let a user authenticate himself without a password by answering one 
or more personal questions (the answers to which you have on file). These questions can be 
"What was the name of your first pet?" or "What's your mother's maiden name?" — anything a 
malicious attacker is unlikely to know. If the user provides the correct answers to your 
questions, you can let him choose a new password.  
One way to compromise between security and readability is to generate a password for a user 
out of actual words interrupted by some numbers.  
$words =  
array('dished','mother','basset','detain','sudden','fellow','logged','sonor
a', 
'earths','remove','dustin','snails','direct','serves','daring','cretan', 
'chirps','reward','snakes','mchugh','uphold','wiring','gaston','nurses', 
'regent','ornate','dogmas','singed','mended','hinges','latent','verbal', 
'grimes','ritual','drying','hobbes','chests','newark','sourer','rumple'); 
mt_srand((double) microtime() * 1000000); 
$word_count = count($words); 
$password = sprintf('%s%02d%s', 
$words[mt_rand(0,$word_count - 1)], 
mt_rand(0,99), 
$words[mt_rand(0,$word_count - 1)]); 
print $password; 
This code produces passwords that are two six-letter words with two numbers between them, 
like 
mother43hinges
or 
verbal08chirps
. The passwords are long, but remembering them 
is made easier by the words in them.  
14.7.4 See Also 
Recipe 14.5
for information about storing encrypted passwords and Recipe 14.6
for details on 
checking password strength.  
Recipe 14.8 Encrypting and Decrypting Data 
14.8.1 Problem 
You want to encrypt and decrypt data using one of a variety of popular algorithms.  
14.8.2 Solution 
Use PHP's mcrypt extension:  
$key  = 'That golden key that opes the palace of eternity.'; 
$data = 'The chicken escapes at dawn. Send help with Mr. Blue.'; 
$alg  = MCRYPT_BLOWFISH; 
$mode = MCRYPT_MODE_CBC; 
$iv = mcrypt_create_iv(mcrypt_get_iv_size($alg,$mode),MCRYPT_DEV_URANDOM); 
$encrypted_data = mcrypt_encrypt($alg, $key, $data, $mode, $iv); 
$plain_text = base64_encode($encrypted_data); 
print $plain_text."\n"; 
$decoded = mcrypt_decrypt($alg,$key,base64_decode($plain_text),$mode,$iv); 
print $decoded."\n"; 
NNB9WnuCYjyd3Y7vUh7XDfWFCWnQY0BsMehHNmBHbGOdJ3cM+yghABb/XyrJ+w3xz9tms74/a70
= 
Documents you may be interested
Documents you may be interested